У меня есть главная страница, которая содержит элемент управления LoginView. В шаблоне LoggedInTemplate у меня есть кнопка ссылки. Я хотел бы перехватить это событие клика и выполнить некоторую очистку (уничтожить сеанс, авторизацию форм и т. Д.). Независимо от того, что я делаю по какой-то причине, событие кнопки никогда не срабатывает, и LoginView переключается обратно на AnonymousTemplate.
Меня беспокоит тот факт, что элемент управления LoginView переключается на AnonymousTemplate. Кажется, что любой элемент управления, который вызывает обратную передачу в LoggedInTemplate, LoginView автоматически предполагает, что пришло время вернуться к 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);