我有一个 .aspx 页面,它显示来自数据库的信息并允许用户添加新项目。
该页面包含一个更新面板。在该更新面板中,有一个网格视图和一个带有一些输入元素的面板:
<asp:Panel runat="server" ID="NewPersonPanel" DefaultButton="NewPersonButton" Visible="false">
<div id="newItemForm">
<label for="NewPersonName">Name:</label>
<asp:TextBox ID="NewPersonName" runat="server" MaxLength="50" />
<asp:RequiredFieldValidator ID="RequiredName" EnableClientScript="true" ControlToValidate="NewPersonName" ErrorMessage="Name must not be empty" ValidationGroup="NewPersonValidationGroup" runat="server" /><br />
<label for="NewPersonFirstName">First Name:</label>
<asp:TextBox ID="NewPersonFirstName" runat="server" MaxLength="50" />
<asp:RequiredFieldValidator ID="RequiredFirstName" EnableClientScript="true" ControlToValidate="NewPersonFirstName" ErrorMessage="First name must not be empty" ValidationGroup="NewPersonValidationGroup" runat="server" /><br />
<div id="newPersonControls">
<asp:LinkButton ID="NewPersonButton" ValidationGroup="NewPersonValidationGroup" runat="server" OnCommand="PersonGrid_Insert">Create</asp:LinkButton>
<asp:LinkButton ID="HideInputFormButton" runat="server" OnCommand="HideInputForm">Cancel</asp:LinkButton>
</div>
</div>
</asp:Panel>
如果没有验证元素,页面就可以正常工作。当我添加验证时,事情变得很奇怪;当我尝试在字段为空时单击“创建”按钮时,会出现红色验证消息,但这会杀死页面上的所有回发。如果我填写这些字段,红色文本会消失,但我不能再使用任何按钮。创建新人,删除表单,对网格进行排序,过滤网格,网格分页......所有这些都停止工作了。使用调试器似乎不再有任何对我的代码的调用,所以看起来失败的验证在 javascript 中做了一些导致所有其他“__doPostBack”方法失败的事情。
我确实找到了这个线程:asp.net: Postback disabled after validation failed 但那里从来没有任何答案。