我有一个包含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);
答案 0 :(得分:1)
我遇到了同样的问题。并且注意到当我在页面Init上的LoginView控件上调用FindControl时会出现此行为。我在LoginView控件中查找哪个控件
并不重要