LoginView LoggedInTemplate里面的LinkBut​​ton,如何捕获Click事件?

时间:2010-10-14 20:08:02

标签: c# asp.net webforms asp.net-membership

我有一个包含LoginView控件的母版页。在LoggedInTemplate中我有一个链接按钮。我想捕获click事件并进行一些清理(kill session,forms auth等)。无论我做什么因为某种原因,按钮事件永远不会触发,并且LoginView切换回AnonymousTemplate。

LoginView控件切换到AnonymousTemplate这一事实让我感到困扰,似乎任何导致LoggedInTemplate中的回发的控件都会自动假定是时候切换回AnonymousTemplate了。因此,我推测不再呈现导致回发开始的按钮,导致回发的事件永远不会陷阱。

这是我的Site.Master内部(并指定了AutoEventWireup =“true”)

<asp:LoginView ID="lgvLoginBox" runat="server">
    <AnonymousTemplate>
        <asp:Login ID="lgLogin" runat="server" DisplayRememberMe="false" />                    
    </AnonymousTemplate>
    <LoggedInTemplate>
        <a href="../Account/ChangePassword.aspx">Change Password</a>
        <asp:LinkButton ID="lbLogoff" runat="server" Text="Log Out" OnClick="lbLogoff_Click"></asp:LinkButton>                                                        
    </LoggedInTemplate>
</asp:LoginView>   

这是我的Site.Master.cs

protected void lbLogoff_Click(object sender, EventArgs e)
{
    throw new NotImplementedException();
}

我还尝试通过Page_Init和Page_Load(在Site.Master.cs中)注册实际的点击事件,但没有运气。当回发触发时,无法再找到控件,因为LoginView上的模板已经是匿名的

LinkButton lbLogoff = lgvLoginBox.FindControl("lbLogoff") as LinkButton;
if(lbLogoff != null)
    lbLogoff.Click +=new EventHandler(lbLogoff_Click);

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。并且注意到当我在页面Init上的LoginView控件上调用FindControl时会出现此行为。我在LoginView控件中查找哪个控件

并不重要