我可以从javascript调用LoginStatus.LoggingOut事件处理程序吗?

我可以从javascript调用LoginStatus.LoggingOut事件处理程序吗?,javascript,asp.net,vb.net,event-handling,Javascript,Asp.net,Vb.net,Event Handling,我有一些javascript,应该在一段不活动的时间后注销用户 我在代码中有一个事件处理程序,用于处理LoginStatus对象的正常注销事件,但我不知道如何从javascript调用它 我知道您可以使用uu doPostBack调用处理链接或按钮的单击事件的事件处理程序,但它似乎对我的LoginStatus对象不起作用-我想这可能是因为它没有单击事件()-它不是真正的普通链接/按钮 我能想到的处理这个问题的唯一其他方法是创建一个实际的注销按钮/链接,编写另一个事件处理程序,它与我的LoginS

我有一些javascript,应该在一段不活动的时间后注销用户

我在代码中有一个事件处理程序,用于处理LoginStatus对象的正常注销事件,但我不知道如何从javascript调用它

我知道您可以使用uu doPostBack调用处理链接或按钮的单击事件的事件处理程序,但它似乎对我的LoginStatus对象不起作用-我想这可能是因为它没有单击事件()-它不是真正的普通链接/按钮

我能想到的处理这个问题的唯一其他方法是创建一个实际的注销按钮/链接,编写另一个事件处理程序,它与我的LoginStatus事件处理程序执行相同的操作,并使用_doPostBack调用这个新的事件处理程序-但我并不喜欢这个想法

有没有办法从javascript调用LoggingOut事件处理程序

页面:

// html
<asp:LoginStatus ID="loginstatus" runat="server" />
...
// js
function expireSession() {
    __doPostBack('loginstatus', ''); // doesn't seem to work
}

我建议你采取不同的策略


创建一个“注销”页面,只需清除cookies/会话/任何内容,并将用户重定向到常规登录页面。计时器结束后,执行javascript重定向到您的注销页面。

我建议您采取不同的策略


创建一个“注销”页面,只需清除cookies/会话/任何内容,并将用户重定向到常规登录页面。计时器运行后,将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);
}

您可以通过以下方式在服务器端获取适当的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);
}

这是正常的,并且在需要您登录的站点的每个页面上都有一个注销按钮。为什么您不希望这样?LoginStatus控件显示一个用于注销的注销链接-我粘贴在那里的代码实际上显示了一个正常工作的注销按钮/链接。但是,我的问题是,更远的javascript试图触发该链接,或者更确切地说是链接的事件处理程序,但却无法触发。如果不清楚的话,很抱歉。这是正常的,需要在要求您登录的站点的每个页面上都有一个注销按钮。为什么您不希望这样?LoginStatus控件显示一个用于注销的注销链接-我粘贴在那里的代码实际上显示了一个正常工作的注销按钮/链接。但是,我的问题是,更远的javascript试图触发该链接,或者更确切地说是链接的事件处理程序,但却无法触发。对不起,如果不清楚的话,我明白了。谢谢你的回答!但我仍然很好奇是否有一种方法可以通过javascript访问事件处理程序——因为你可以通过按钮或链接来访问,我觉得一定有某种方法。@parkker007:你当然可以创建一个从loginstatus控件继承的新控件,并将你自己的按钮单击事件处理程序添加到其中。我明白了。谢谢你的回答!但我仍然很好奇是否有办法通过javascript访问事件处理程序——因为你可以通过按钮或链接来访问,我觉得一定有办法。@parkker007:你当然可以创建一个从loginstatus控件继承的新控件,并向它添加你自己的按钮点击事件处理程序。