Нажмите кнопку внутри UpdatePanel с LoginView - PullRequest
2 голосов
/ 06 апреля 2011

У меня есть UpdatePanel с LoginView внутри, теперь, внутри AnonymousTemplate, у меня есть кнопка (btnLogin), проблема в том, что тег триггеров не видит кнопку. вот код:

<asp:UpdatePanel ID="UpdatePanel2" runat="server">
    <ContentTemplate>
        <asp:LoginView ID="LoginView1" runat="server">
            <AnonymousTemplate>
                <asp:Button ID="btnLogin" runat="server" Text="Iniciar sesión" 
                            onclick="btnLogin_Click" />
            </AnonymousTemplate>
            <LoggedInTemplate>
                <asp:TextBox ID="txtPassword" runat="server" Text="You're in"/>
            </LoggedInTemplate>
        </asp:LoginView>
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="btnLogin" EventName="Click" />
    </Triggers>
</asp:UpdatePanel>

И, наконец, ошибка: Не удалось найти элемент управления с идентификатором 'btnLogin' для триггера в UpdatePanel 'UpdatePanel2'

Ответы [ 2 ]

4 голосов
/ 06 апреля 2011

Я думаю, что в этом случае вам, возможно, придется добавить триггер в коде, скажем, на Pre_Init страницы; вы можете получить доступ к свойству Triggers, которое предоставляет метод Add.

Выдает подсказку, что вам также понадобится найти кнопку в коде:

var button = LoginView1.FindControl("btnLogin") as Button;

Это должно сработать:

var trigger = new PostBackTrigger();
trigger.ControlID = button.UnuiqueID;
UpdatePanel2.Triggers.Add(trigger);
1 голос
/ 06 апреля 2011

Я думаю, это потому, что триггер действителен только тогда, когда вы не вошли в систему.

Кнопка не существует, когда вы вошли в систему.

Если вы вызываете частичную обратную передачу для элемента управления на панели, вам не нужно использовать пользовательский триггер из того, что я помню.

Что произойдет, если вы вытащите это так:

<asp:UpdatePanel ID="UpdatePanel2" runat="server">
    <ContentTemplate>
        <asp:LoginView ID="LoginView1" runat="server">
            <AnonymousTemplate>
                <asp:Button ID="btnLogin" runat="server" Text="Iniciar sesión" 
                            OnClick="btnLogin_Click" />
            </AnonymousTemplate>
            <LoggedInTemplate>
                <asp:TextBox ID="txtPassword" runat="server" Text="You're in"/>
            </LoggedInTemplate>
        </asp:LoginView>
    </ContentTemplate>

</asp:UpdatePanel>
...