2

在我的 aspx 页面上,我有两个fieldsets,每个都用一个<asp:Panel DefaultButton="...">有自己的<input type="submit">按钮的包装。这是一个缩略版...

<div id="content">...</div>
<asp:Panel runat="server" id="formPanel1" DefaultButton="form1SubmitButton"> 
    <fieldset>
        <asp:TextBox runat="server" id="textbox1"/>
        <asp:TextBox runat="server" id="textbox2"/>
        <asp:Button runat="server" id="form1SubmitButton" OnClick="form1SubmitButton_OnClick"/>
    </fieldset>
</asp:Panel>
<asp:Panel runat="server" id="formPanel2" DefaultButton="form2SubmitButton"> 
    <fieldset>
        <asp:TextBox runat="server" id="textbox3"/>
        <asp:TextBox runat="server" id="textbox4"/>
        <asp:Button runat="server" id="form2SubmitButton" OnClick="form2SubmitButton_OnClick"/>
    </fieldset>
</asp:Panel>

只有最后一个提交按钮form2SubmitButton会回发,其他按钮在单击时什么也不做。我已经简化了上面的代码,但我应该提到每个表单,包括面板,都保存在一个单独的用户控件中,该控件在 aspx 上注册。

更新:经过更多研究,我发现由于母版页上另一个字段集上的验证器,提交无法正常工作。该字段集用于登录站点,因此是必需的。想法?

4

2 回答 2

2

正如 PCasagrande 提到的,确保您的验证组与默认按钮和所有验证器匹配。特别适合您的日志记录部分。

例子:

<asp:Panel ID="pnlUpdateInfo" runat="server" DefaultButton="btnUpdateInfo">

  <ASP:TEXTBOX id="txtZip" runat="server"></ASP:TEXTBOX>   
  <asp:RequiredFieldValidator id="reqvalZipSignUp" runat="server"
    ControlToValidate="txtZip" ValidationGroup="btnUpdateInfo" />                       

  <asp:Button ID="btnUpdateInfo" runat="server" ValidationGroup="btnUpdateInfo"  />

</asp:Panel>
于 2012-07-26T14:08:41.853 回答
1

原来它与 HTML5 约束验证有关。我想通了,因为在 chrome 中,从控制台,我得到了错误An invalid form control with name='...' is not focusable。这导致了我这篇文章。我在提交按钮中添加了 html5 属性formnovalidate="formnovalidate",一切正常(*在 chrome v20.0.1132.57、firefox v14.0.1、IE9 v9.0.8112 中测试)。

回顾一下,这就是答案……

<asp:Button runat="server" id="submit1" OnClick="submit1_OnClick" text="Submit" formnovalidate="formnovalidate"/>
于 2012-07-26T17:42:38.550 回答