3

我已经检查了一个解决方案,但我似乎没有得到任何指向 asp.net mvc 的信息。基本上我正在寻找一种解决方案,在会话到期前一分钟通知用户。

理想的解决方案是倒计时通知,可以选择更新会话。

如果倒数计时器到期而用户没有刷新页面,我需要将它们注销。

4

1 回答 1

5

像这样的东西:

public class YourController : Controller {
    public ActionResult TheAction() {
        ViewData["SessionTimeout"] = Request.Session.Timout;
        ViewData["SessionWillExpireOn"] = DateTime.Now.AddMinutes(Request.Session.Timeout);
        return View(info);
    }
}

还有这个:

<span>Your session will expire: <%= ViewData["SessionWillExpireOn"].ToString() %></span>
<span id="countDown" style="display:none></span>
<script type="text/javascript">
    var sessionTimout = <%= ViewData["SessionTimeout"].ToString(); %>;      
    var approximateStart = new Date();
    var notifyAfter = new Date(approximateStart + (sessionTimout - 1)*60*1000);
    function startCountDown() {
        setTimout(function() {
            var now = new Date();
            document.getElementById('countDown').style.display = 'inline';
            document.getElementById('countDown').innerHTML = "Countdown: " + now.getMinutes();
            if (now >= notifyAfter)
                alert('About to expire...');
        }, 5000);
    }
    document.onload=startCountDown;
</script>

在记事本中写了视图,所以请检查语法。我也不记得确切的 JS 中的 DateTime 内容。

无论如何,您应该看到这个想法。

于 2009-11-16T06:09:27.513 回答