【发布时间】:2012-07-25 20:10:22
【问题描述】:
在我的 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 会回发,其他按钮在点击时什么也不做。 我已经简化了上面的代码,但我应该提一下,包括 Panel 在内的每个表单都保存在一个单独的用户控件中,该控件在 aspx 上注册。
更新:经过更多研究后,我发现由于母版页上另一个字段集上的验证器,提交无法正常工作。该字段集用于登录站点,因此是必需的。想法?
【问题讨论】:
-
那甚至不应该编译/运行。 ID 在该上下文中必须是唯一的。我怀疑太多被“缩写”了。在任何情况下,一个真正常见的“回发未运行”问题(但回发仍然发生!)是由控制树未正确恢复引起的。另外,“无所事事”是什么意思?是否已发送请求?调用 __dopostback 时是否出错?有更新面板吗?有验证吗?
-
每个字段集实际上都在单独的用户控件中。所以id相同不应该有任何区别。我会为这个例子改变它。您能否解释一下,或指出正确的方向以了解有关控制树未正确恢复的更多信息?
-
您可能需要检查以确保您的验证组没有阻止其中一个提交。
-
@pst "Does Nothing" 意味着当我点击提交按钮时,没有任何反应,没有回发,没有 js 错误,什么都没有。不,没有更新面板,我的验证是通过 jquery 插件在客户端进行的,并且工作正常。
-
@bflemi3 现在这……很有趣。任何自定义事件处理程序?任何客户端验证(它是否适用于删除验证)?是否附加了内联“onclick”属性?它在表单元素内吗? (页面上只有一个表单元素吗?)