【问题标题】:DefaultButton of 'panelName' must be the ID of a control of type IButtonControl“panelName”的 DefaultButton 必须是 IButtonControl 类型的控件的 ID
【发布时间】:2014-08-31 13:53:19
【问题描述】:

我正在 ASP.NET 上开发一个网站并使用引导程序进行设计。我正在使用模态淡入淡出类(如弹出窗口)供用户登录。

这是我的代码:

<div class="modal fade" id="login" role="dialog">
   <asp:Panel ID="AZloginPanel" runat="server">
      <div class="modal-dialog">
         <div class="modal-content">
            <div class="form-horizontal">
               <div class="modal-header">
                  <h4>Login</h4>
               </div>
            <div class="modal-body">
               <asp:Login ID="LoginUser" runat="server" EnableViewState="false" RenderOuterTable="false">
                  <LayoutTemplate>
                     <span class="failureNotification">
                        <asp:Literal ID="FailureText" runat="server"></asp:Literal>
                     </span>
                     <asp:ValidationSummary ID="LoginUserValidationSummary" runat="server" CssClass="failureNotification"
                                        ValidationGroup="LoginUserValidationGroup" />
                     <div class="accountInfo">
                        <fieldset class="login">
                           <div class="form-group">
                              <asp:Label ID="UserNameLabel" CssClass="col-lg-2 control-label" runat="server" AssociatedControlID="UserName">Username:</asp:Label>
                                <div class="col-lg-10">
                                   <asp:TextBox ID="UserName" runat="server" CssClass="form-control" placeholder="Username"></asp:TextBox>
                                </div>
                                <asp:RequiredFieldValidator ID="UserNameRequired" runat="server" ControlToValidate="UserName"
                                                    CssClass="failureNotification" ErrorMessage="User Name is required." ToolTip="User Name is required."
                                                    ValidationGroup="LoginUserValidationGroup">*</asp:RequiredFieldValidator>
                           </div>
                           <div class="form-group">
                              <asp:Label ID="PasswordLabel" CssClass="col-lg-2 control-label" runat="server" AssociatedControlID="Password">Password:</asp:Label>
                              <div class="col-lg-10">
                                 <asp:TextBox ID="Password" runat="server" CssClass="form-control" placeholder="Password" TextMode="Password"></asp:TextBox>
                              </div>
                              <asp:RequiredFieldValidator ID="PasswordRequired" runat="server" ControlToValidate="Password"
                                                    CssClass="failureNotification" ErrorMessage="Password is required." ToolTip="Password is required."
                                                    ValidationGroup="LoginUserValidationGroup">*</asp:RequiredFieldValidator>
                           </div>
                           <p>
                              <asp:CheckBox ID="RememberMe" runat="server" />
                              <asp:Label ID="RememberMeLabel" runat="server" AssociatedControlID="RememberMe" CssClass="inline">Keep me logged in</asp:Label>
                           </p>
                        </fieldset>
                        <div class="modal-footer">
                           <p class="pull-left">
                                <asp:HyperLink ID="RegisterHyperLink" runat="server" EnableViewState="false" NavigateUrl="~/Account/Register.aspx">Register</asp:HyperLink>if you don't have an account.
                           </p>
                              <asp:Button ID="CloseModal" runat="server" CssClass="btn btn-info" CommandName="Close" Text="Close" />
                              <asp:Button ID="LoginButton" runat="server" CssClass="btn btn-primary" CommandName="Login" Text="Log In" ValidationGroup="LoginUserValidationGroup" />
                         </div>
                     </div>
                  </LayoutTemplate>
               </asp:Login>
            </div>
         </div>
      </div>
   </div>
</asp:Panel>
</div>

当我在AZloginPanel 面板中设置DefaultButton="LoginButton" 时,出现以下错误:

“AZloginPanel”的 DefaultButton 必须是 IButtonControl 类型的控件的 ID。

我迷路了,我已经尝试了一切,但似乎我走到了死胡同。

有什么想法吗?

【问题讨论】:

    标签: jquery asp.net twitter-bootstrap twitter-bootstrap-3 master-pages


    【解决方案1】:

    问题是asp:login 控件修改了它的孩子的ID,所以asp:panel 控件不知道去哪里寻找新的DefaultButton id。

    这是重现该问题的简化版本:

    <asp:Panel ID="AZloginPanel" runat="server" DefaultButton="LoginButton">
        <asp:Login ID="LoginUser" runat="server" >
            <LayoutTemplate>
                <asp:TextBox ID="UserName" runat="server" />
                <asp:TextBox ID="Password" runat="server" TextMode="Password" />
                <asp:Button ID="LoginButton" runat="server" Text="Log In" />
            </LayoutTemplate>
        </asp:Login>
    </asp:Panel>
    

    如果您想使用DefaultButton for a LoginControl,您可以执行以下两项操作之一:

    1。将面板嵌套在登录控件内:

    <asp:Login ID="LoginUser" runat="server" >
        <LayoutTemplate>
            <asp:Panel runat="server" DefaultButton="LoginButton">
                <asp:TextBox ID="UserName" runat="server" />
                <asp:TextBox ID="Password" runat="server" TextMode="Password" />
                <asp:Button ID="LoginButton" runat="server" Text="Log In" />
            </asp:Panel>
        </LayoutTemplate>
    </asp:Login>
    

    2。使用 LoginControlID 然后 $ 然后 Button ID 构建 ID:

    <asp:Panel ID="AZloginPnl" runat="server" DefaultButton="LoginUser$LoginButton">
        <asp:Login ID="LoginUser" runat="server" >
            <LayoutTemplate>
                <asp:TextBox ID="UserName" runat="server" />
                <asp:TextBox ID="Password" runat="server" TextMode="Password" />
                <asp:Button ID="LoginButton" runat="server" Text="Log In" />
            </LayoutTemplate>
        </asp:Login>
    </asp:Panel>
    

    【讨论】:

    • 如果您使用的是.Net 4.0或更高版本,您也可以使用ClientIDMode并在登录按钮上将其设置为静态,这样clientID就等于ID
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-10
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-27
    相关资源
    最近更新 更多