将window.SessionTimeout脚本传递给js文件

问题描述 投票:1回答:2

我正在做一个MVC应用程序。这是在我的_Layout.cshtml中

我需要将它移动到一个js文件

<script type="text/javascript">
window.SessionTimeout = (function() {
    var _timeLeft, _popupTimer, _countDownTimer;

    var stopTimers = function() {
        window.clearTimeout(_popupTimer);
        window.clearTimeout(_countDownTimer);
    };

    var updateCountDown = function() {
        var min = Math.floor(_timeLeft / 60);
        var sec = _timeLeft % 60;
        if(sec < 10)
            sec = "0" + sec;

        document.getElementById("CountDownHolder").innerHTML = min + ":" + sec;

        if(_timeLeft > 0) {
            _timeLeft--;
            _countDownTimer = window.setTimeout(updateCountDown, 1000);
        } else  {
            document.location = "Home/TimeOutPage";
        }            
    };

    var showPopup = function() {
        _timeLeft = 60;
        updateCountDown();
        ClientTimeoutPopup.Show();
    };

    var schedulePopup = function() {
        stopTimers();
        _popupTimer = window.setTimeout(showPopup, @PopupShowDelay);
    };

    var sendKeepAlive = function() {
        stopTimers();
        ClientTimeoutPopup.Hide();
        SessionTimeout.schedulePopup();
    };

    return {
        schedulePopup: schedulePopup,
        sendKeepAlive: sendKeepAlive
    };

})();    

我尝试只复制脚本标记之间的代码,但它不起作用。我知道问题在于函数签名

window.SessionTimeout =(function(){...

但我不知道在js文件中使用window.SessionTimeout很热。

@PopupShowDelay在我的视图中定义如下:

       @functions { 
        public int PopupShowDelay
        {
            get { return 60000 * (Session.Timeout - 1); }
        }
    }

UPDATE

好的,我发现了错误。问题是变量

@PopupShowDelay

我在视图中定义了这个并尝试读取.js文件。

所以,我要检查一下:qazxsw poi

谢谢!!

javascript asp.net-mvc view
2个回答
0
投票

您可能在嵌套函数中遇到Passing parameters to JavaScript files上下文问题。 this


0
投票

如果您将文件链接到模板文档正文末尾的脚本标记中并且文件正确加载(如果执行代码则使用console.log进行测试),那么您的代码应该正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.