我有一些javascript应该在一段非活动时间后将用户注销。
我有一个事件处理程序背后的代码,处理LoginStatus对象的正常LoggingOut事件,但我不知道如何从我的javascript调用它。
我知道你可以使用__doPostBack调用一个事件处理程序来处理链接或按钮的点击事件,但它似乎不适合我的LoginStatus对象-我认为这可能是因为它没有点击事件(这里是文档)-它不是一个正常的链接/按钮。
我能想到的处理这个问题的唯一其他方法是创建一个实际的注销按钮/链接,编写另一个事件处理程序,做与我的LoginStatus事件处理程序相同的事情,并使用__doPostBack调用这个新的-但我真的不喜欢这个想法。
是否有任何方法我可以从我的javascript调用LoggingOut事件处理程序?
页面:
// html
<asp:LoginStatus ID="loginstatus" runat="server" />
...
// js
function expireSession() {
__doPostBack('loginstatus', ''); // doesn't seem to work
}
后面的代码:
Protected Sub loginstatus_LoggingOut(ByVal sender...) Handles loginstatus.LoggingOut
Logout() // this is my own logout sub
End Sub
我建议你采取另一种策略。
创建一个"注销"页面,简单地清除cookie/session/其他内容,并将用户重定向到常规登录页面。当计时器已过,做一个javascript重定向到您的注销页面
您可以通过以下方式在服务器端获得正确的javascript: ClientScript.GetPostBackClientHyperlink(LoginStatus1.Controls[0], null)
但不要忘记注册这个脚本与ClientScript.RegisterForEventValidation(LoginStatus1.Controls[0].UniqueID);
页面渲染:
protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
// required by ASP.NET to pass EnableEventValidation on page as our composed link
// will postback from other control not original LoginStatus
ClientScript.RegisterForEventValidation(LoginStatus1.Controls[0].UniqueID);
base.Render(writer);
}