我可以从javascript调用LoginStatus.LoggingOut事件处理程序吗?
我有一些JavaScript应该在一定时间的非活动时间之后将用户注销。我可以从javascript调用LoginStatus.LoggingOut事件处理程序吗?
我在后面的代码中处理LoginStatus对象的正常LoggingOut事件的事件处理程序,但我无法弄清楚如何从我的JavaScript调用它。
我知道你可以使用__doPostBack调用处理链接或按钮的Click事件的事件处理程序,但它似乎不适用于我的LoginStatus对象 - 我想这可能是因为它没有点击事件(here's the doc) - 这不是一个正常的链接/按钮。
我能想到的唯一方法就是创建一个实际的注销按钮/链接,编写另一个事件处理程序,它与我的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
我建议你采取不同的间歇。
创建一个“注销”页面,只需清除cookies/session/whatever并将用户重定向到常规登录页面。当计时器已过时,请将JavaScript重定向到您的注销页面。
我明白了。感谢你的回答!但我仍然对是否有通过javascript访问事件处理程序的方式感到好奇 - 因为您可以通过按钮或链接进行操作,所以我觉得必须有某种方式。 – parkker007
@ parkker007:您当然可以创建一个从loginstatus控件继承的新控件,并向它添加您自己的按钮单击事件处理程序。 – NotMe
您可以通过获得服务器端适当的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);
}
这是正常的,预计将会对每一个注销按钮一个网站的页面,需要您登录。为什么你不想要那个? – NotMe
LoginStatus控件显示一个用于注销的注销链接 - 我粘贴在那里的代码实际上显示一个注销按钮/链接,该链接正常工作。但是,我的问题是,更向下的JavaScript试图触发该链接,或者更确切地说是链接的事件处理程序,而不能。对不起,如果不明确。 – parkker007