LinkButton внутри LoginView LoggedInTemplate, как перехватить событие Click? - PullRequest
1 голос
/ 15 октября 2010

У меня есть главная страница, которая содержит элемент управления 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);

1 Ответ

1 голос
/ 14 октября 2011

Я столкнулся с той же проблемой.И заметили, что это происходит, когда я вызываю FindControl для элемента управления LoginView на странице Init.Мне не важно, какой элемент управления вы смотрите в элементе управления LoginView

...