我有一个.aspx页面,它显示数据库中的信息,并允许用户添加新项目。
该页面包含更新面板。在该updatepanel中,有一个gridview和一个带有一些输入元素的面板:
<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但是那里从来没有任何答案。
答案 0 :(得分:2)
因为您设置了验证,所以无法进行回发。
但您可以使用ValidatorEnable(object,true/false)
这需要两个参数,第一个是对象,第二个是启用还是禁用。
在你的情况下是假的。
但您必须为表单中的所有控件(已为其设置验证)执行此操作。