【发布时间】:2023-03-22 16:46:01
【问题描述】:
当我的会话即将在 .net MVC 中清除时,我必须显示一个弹出窗口。
我想在 MVC 中实现同样的东西。我该怎么办???
这里我尝试了一些代码:
这是控制器页面(错误来自客户端脚本不存在):
Configuration config = WebConfigurationManager.OpenWebConfiguration("~/Web.Config");
SessionStateSection section = (SessionStateSection)config.GetSection("system.web/sessionState");
int timeout = (int)section.Timeout.TotalMinutes * 1000 * 60;
ClientScript.RegisterClientScriptBlock(this.GetType(),"SessionAlert", "SessionExpireAlert(" + timeout + ");", true);
这是我在视图中的脚本(我从控制器调用):
<script type="text/javascript">
function SessionExpireAlert(timeout) {
var seconds = timeout / 1000;
document.getElementsByName("secondsIdle").innerHTML = seconds;
document.getElementsByName("seconds").innerHTML = seconds;
setInterval(function () {
seconds--;
document.getElementById("seconds").innerHTML = seconds;
document.getElementById("secondsIdle").innerHTML = seconds;
}, 1000);
setTimeout(function () {
//Show Popup before 20 seconds of timeout.
$find("mpeTimeout").show();
}, timeout - 20 * 1000);
setTimeout(function () {
window.location = "Expired.aspx";
}, timeout);
};
function ResetSession() {
//Redirect to refresh Session.
window.location = window.location.href;
}
</script>
【问题讨论】:
-
恐怕你做不到。页面对象可以在 web 表单中调用,因为服务器端代码是紧密耦合的,但你不能使用 mvc 来做到这一点
-
why???如何在mvc中做..我认为必须有任何方法可以做到这一点..如果你有任何解决方案告诉我..
-
您可以使用 JQuery javascript 库并触发 ajax 请求,并在成功处理程序中执行您需要的操作。
-
你能写下做这个操作的代码吗
-
是的,在那之前..我想知道上面的控制器代码是否存在于控制器的操作方法或构造函数中?
标签: asp.net-mvc asp.net-mvc-4 session