与会话相关的逻辑

时间:2014-01-09 04:38:55

标签: asp.net .net asp.net-mvc-3 asp.net-mvc-4

我要求在剩余一分钟到会话到期时向用户显示弹出窗口。假设会话到期时间为5分钟,我需要显示“您的会话将在下一分钟到期”的弹出窗口,如果您想继续,请单击此处,否则单击取消。因此,如果用户点击确定,时间应该再次自动刷新,如果取消则不需要做任何事情。 为此我在Layout

中的Shared文件夹中做了类似的事情
var myVar = setInterval(function () { myTimer() }, 240000);
function myTimer() {
    var r = confirm("Session will expire in a minute. will you like to continue working?");
    if (r == true) {
        var _Id = $("#Id").val();

        $.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            url: "../Home/ResetUser",
            data: "{'User_ID':'" + _Id + "'}",
            dataType: "json",
            success: function (data) {
                if (data.Data == 'Done') {
                }
            },
            error: function (xhr) {
            }
        });
    }
    else {
        window.clearInterval(myVar);
    }

但我有一个问题,那就是我没有在所有页面中派生相同的布局。有些模块有不同的布局,有些页面不需要任何布局。所以,我需要让不同布局或不使用布局的页面保持不同的脚本运行。

如果我针对不同的布局保持不同的脚本,它会正常工作吗? 另外假设我已经登录并设置了会话变量。现在时间设定为5分钟 并且用户进入主页,不使用我保留上述脚本的布局。 我在此页面中添加了不同的脚本,脚本函数时间开始..

然后用户转到另一个页面然后会话时间会刷新? 我必须在该页面上加载我的上述脚本功能? 我做的是正确的事。

1 个答案:

答案 0 :(得分:0)

您好您可以在 _viewstart.cshtml 文件中编写脚本。

无论您使用的布局页面如何,都将针对每个请求执行此操作

然后用户转到另一个页面然后会话时间会刷新?我必须在该页面上加载我的上述脚本功能吗?

当用户刷新页面或再次请求服务器时,会重置会话时间。

这是达到您要求的一种方式。