C# 使用LoginView触发UpdatePanel中的按钮

C# 使用LoginView触发UpdatePanel中的按钮,c#,asp.net,ajax,triggers,updatepanel,C#,Asp.net,Ajax,Triggers,Updatepanel,我有一个UpdatePanel,里面有一个LoginView,现在,在AnonymousTemplate里面我有一个Button btnLogin,问题是触发器标签没有看到按钮。 代码如下: <asp:UpdatePanel ID="UpdatePanel2" runat="server"> <ContentTemplate> <asp:LoginView ID="LoginView1" runat="server">

我有一个UpdatePanel,里面有一个LoginView,现在,在AnonymousTemplate里面我有一个Button 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>
最后是错误:
在UpdatePanel'UpdatePanel2'中找不到ID为'btnLogin'的触发器控件。

我认为在这种情况下,您可能需要在代码中添加触发器,例如,在页面的初始化之前;您可以访问公开Add方法的Triggers属性

您还需要在代码中找到按钮:

var button = LoginView1.FindControl("btnLogin") as Button;
这应该起到作用:

var trigger = new PostBackTrigger();
trigger.ControlID = button.UnuiqueID;
UpdatePanel2.Triggers.Add(trigger);

我认为这是因为触发器只有在您未登录时才有效

登录后,该按钮不存在

如果调用面板中控件的部分回发,则不需要使用我记忆中的自定义触发器

如果像这样取出,会发生什么情况:

<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>

谢谢,提示一下,但是FindControl没有找到按钮,总是返回null。。。有什么想法吗?否则,在后面的代码中,我没有看到按钮:根据Andi的回答,你现在登录了吗?你需要确定这一点,看看是否值得尝试找到按钮。不,我没有登录。此外,我在LoggedInTemplate中没有看到TextBox控件。我已经更新了我的答案,使用LoginView1.FindControl,因为它是按钮的父级,所以它应该找到它。不过,不确定这种容器分离是否会导致所谓的外部触发器出现任何问题。是的!现在一切正常!非常感谢你们两位。我只为AsyncPostBackTrigger更改了一件事PostBackTrigger。按钮位于AnonumousTemplate中,开始时必须存在,因为我未登录。。。如果不是。。。如何修复此问题?是的,这是一个运行时错误。但是,我不能在代码隐藏中使用btnLogin或txtPassword,因为VS也没有看到。它在没有触发器或在代码隐藏中定义触发器的情况下工作吗?很高兴它能正常工作。您是在运行时还是在生成时收到错误?如果是运行时,您是否仅在登录时才收到错误?