【问题标题】:ASP.NET validation happens on postbackASP.NET 验证在回发时发生
【发布时间】:2012-07-24 06:30:56
【问题描述】:

我在标准 ASP.NET 页面上有一个带有一些输入控件的表单。我使用验证控件来验证服务器上的输入。

我注意到有几篇文章描述了在验证失败时会阻止回发这一事实的问题。我的问题恰恰相反,即永远不会阻止回发,但是每次回发时都会发生验证,这意味着每次用户更改输入字段中的值时,表单都会被涂上红色文本(即使他很清楚他没有填写表格!)。

本论坛上的其他文章认为这种行为是有意的。显然,用户不想担心在按下“提交”之前告诉他他做错了什么的信息。 那么如何将控件配置为仅在按下提交按钮时显示验证摘要,而不是在任何回发时显示验证摘要?

注意:我只在按下提交按钮时调用 Page.IsValid - 没有其他地方。谢谢。

【问题讨论】:

  • 您能否显示您尝试验证的 asp 页面,同时确保按钮在原因验证时设置为 true
  • 误解 - 阅读 ASP.NET Page-lifecycle Validating User Input in ASP.NET Web Pages - 验证发生在页面初始化之后(即在处理视图状态和回发数据之后)但之前调用任何更改或单击事件处理程序。

标签: asp.net validation postback


【解决方案1】:

尝试将validationgroup 属性添加到您的所有验证器和您想要进行验证的按钮。查看更多:http://msdn.microsoft.com/en-us/library/ms227424.aspx 示例:

    <asp:TextBox ID="TextBox1" Runat="server" ValidationGroup="First"></asp:TextBox>
    <asp:RequiredFieldValidator ID="RequiredFieldValidator1" Runat="server" ValidationGroup="First"
    ErrorMessage="TextBox1 should not be blank" ControlToValidate="TextBox1">

    </asp:RequiredFieldValidator>
    <asp:Button ID="Submit1" Runat="server" ValidationGroup="First" Text="Submit 1" />

【讨论】:

    【解决方案2】:

    您只需为在按钮单击时需要验证的所有控件提供 same 验证组属性。此外,您的按钮必须具有相同的验证组,并将按钮的 causeevalidation 属性设置为 true。 这应该可以避免您回发。 谢谢。

    【讨论】:

      【解决方案3】:

      验证组将本地化 ValidationSummary 显示区域,通常在物理上靠近其关联的数据字段。 与值更改时的自动回发无关。

      我会检查您的验证器是否启用了客户端脚本。 如果不是,则只有服务器可以验证数据 - 需要对任何值更改进行回发。

      PS:在简单的表单上,我从不使用验证组,因为所有报告的错误都可以累积在默认组下,并且相关联的消息一起显示。 在复杂的表格上,我可能会创建几个组以使错误在物理上接近有问题的数据。无论您的分组如何,ALL 验证方法都将运行 - 并报告给指定组内的相关验证摘要(如果提供)。 编辑 这是来自微软的:

      要以编程方式验证,您可以调用 Validate 方法 采用 validationGroup 参数强制验证的重载 仅适用于该验证组。请注意,当您调用 Validate 方法,IsValid 属性反映了所有组的有效性 验证至今。这可能包括经过验证的组 作为回发的结果,以及经过程序验证的组。 如果任一组中的任何控件无效,则 IsValid 属性 返回 false。

      http://msdn.microsoft.com/en-us/library/vstudio/ms227424(v=vs.100).aspx

      GROUPS 与回发无关。他可能有一个设置了自动回发或关闭脚本的控件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-28
        • 2017-10-22
        相关资源
        最近更新 更多