gpt4 book ai didi

c# - 由于 updatepanel 没有分配窗口 setTimeout?

转载 作者:太空宇宙 更新时间:2023-11-03 13:33:47 25 4
gpt4 key购买 nike

由于 UpdatePanel,我遇到了问题。我正在从后面的代码中分配窗口超时(片段在页面加载时)。第一次正确分配时间。但是当我更改 dropdownlist 或其他一些导致页面加载的控件时,未分配时间。但我希望在页面加载发生时重置 session 时间。

 <script language="javascript" type="text/javascript">
alert(<%=mintTimeout%>);
window.setTimeout("endSession();",<%=mintTimeout%>);
function endSession()
{
alert("Your session has expired. You will be redirected to the login page.");
}

<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true">
<asp:ListItem>1</asp:ListItem>
<asp:ListItem>2</asp:ListItem>
<asp:ListItem>3</asp:ListItem>
</asp:DropDownList>
<asp:DropDownList ID="DropDownList2" runat="server" AutoPostBack="true">
<asp:ListItem>a</asp:ListItem>
<asp:ListItem>b</asp:ListItem>
<asp:ListItem>c</asp:ListItem>
</asp:DropDownList>
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>

我的代码是

 public int mintTimeout = 0;
protected void Page_Load(object sender, EventArgs e)
{
Session.Timeout = 1;
mintTimeout = (Session.Timeout) * 60000;
}

protected void Button1_Click(object sender, EventArgs e)
{

}

请帮我解决这个问题?

最佳答案

您需要在每次回发时清除并重新分配超时。为此,您可以使用 pageLoad 函数。如下更改脚本:

var sessionExpiredTimeout = null;

function pageLoad() {
if(sessionExpiredTimeout){
clearTimeout(sessionExpiredTimeout);
}
sessionExpiredTimeout = setTimeout(endSession, <%= mintTimeout %> );
}

function endSession() {
alert("Your session has expired. You will be redirected to the login page.");
}

关于c# - 由于 updatepanel 没有分配窗口 setTimeout?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19426500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com