【问题标题】:ASP Validation kills postbackASP 验证杀死回发
【发布时间】:2012-10-15 12:21:25
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    由于您设置了验证,您将无法回发。

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

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

    在你的情况下它是错误的。

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

    【讨论】:

    • 哦,我以为 ValidationGroup 会自动处理这个问题。这是否意味着我必须弄乱并编辑导致回发的每个链接按钮?奇怪的是,只要验证不必触发,一切都会完美运行。如果我填写这两个字段,我可以创建人员、浏览网格视图、使用分页等等......就好了。
    • 不,如果您使用过组,那么您也可以按组进行。
    • 看看这个博客,这家伙给了一个很好的例子veskokolev.blogspot.in/2007/11/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多