0
我有一個JavaScript源文件,命名爲LIMDU.js,包含VAR和功能,這樣的 -javaScript的本地腳本找不到SRC腳本函數
var SessionTimeOutID;
function KeepSessionAlive() {
var sessionTimeoutWarning = @Session.Timeout;
var sTimeout = parseInt(sessionTimeoutWarning) * 60 * 1000;
clearTimeout(SessionTimeOutID);
SessionTimeOutID = setTimeout('SessionEnd()', sTimeout);
function SessionEnd() {
window.location = "/Account/LogOff";
}
}
,並在CSHTML文件,我有這個:
<script type="text/javascript" src="~/Scripts/LIMDU.js"></script>
<script>
$(document).ready(function() {
KeepSessionAlive();
});
</script>
但是當我嘗試執行代碼時,我得到錯誤「KeepSessionAlive」找不到。
我認爲src代碼會在本地腳本代碼執行之前加載;如果情況並非如此,我該如何引用在src'd文件中定義的本地腳本塊中的函數?
除非你有東西在它到達瀏覽器之前進行預處理,否則你的'LINDU.js'包含語法錯誤:'var sessionTimeoutWarning = @Session .Timeout;'錯誤與'@'一樣。通常情況下,服務器不會預處理'.js'文件(如'.cshtml'文件)。因此,首先要做的就是使用瀏覽器工具在控制檯中查找錯誤,並檢查服務器發送到瀏覽器的實際內容。如果它有語法錯誤,那就是問題所在。 –
這就是那個腳本文件中的全部內容嗎? '@ Session.Timeout'實際上被替換了嗎?我猜沒有 – epascarello
我認爲誤解是你試圖在JavaScript文件中使用Razor /'.cshtml'語法 - 這是不正確的。您可以使'KeepSessionAlive'將超時作爲參數,然後在您的.cshtml文件中傳遞'@ Session.Timeout',但我不是一個ASP人,所以我不確定。 –