ASP验证会导致回发

时间:2012-10-15 12:21:25

标签: c# asp.net postback asp.net-3.5

我有一个.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但是那里从来没有任何答案。

1 个答案:

答案 0 :(得分:2)

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

但您可以使用ValidatorEnable(object,true/false)

停用它们

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

在你的情况下是假的。

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