0

我有一个 .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>

如果没有验证元素,页面就可以正常工作。当我添加验证时,事情变得很奇怪;当我尝试在字段为空时单击“创建”按钮时,会出现红色验证消息,但这会杀死页面上的所有回发。如果我填写这些字段,红色文本会消失,但我不能再使用任何按钮。创建新人,删除表单,对网格进行排序,过滤网格,网格分页......所有这些都停止工作了。使用调试器似乎不再有任何对我的代码的调用,所以看起来失败的验证在 ja​​vascript 中做了一些导致所有其他“__doPostBack”方法失败的事情。

我确实找到了这个线程:asp.net: Postback disabled after validation failed 但那里从来没有任何答案。

4

1 回答 1

2

因为您设置了验证,所以您将无法回发。

但是您可以通过使用禁用它们ValidatorEnable(object,true/false)

这需要两个参数,第一个是对象,第二个是启用还是禁用。

在你的情况下,这是错误的。

但是您必须为表单中的所有控件执行此操作(您已为其设置了验证)。

于 2012-10-15T12:29:09.677 回答