1

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

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

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

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

4

3 回答 3

3

尝试将 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" />
于 2012-07-24T06:41:54.953 回答
0

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

于 2013-10-11T07:06:02.027 回答
0

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

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

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

要以编程方式进行验证,您可以调用采用 validationGroup 参数的 Validate 方法重载来强制仅对该验证组进行验证。请注意,当您调用 Validate 方法时,IsValid 属性会反映到目前为止已验证的所有组的有效性。这可能包括作为回发结果验证的组和以编程方式验证的组。如果任一组中的任何控件无效,则 IsValid 属性返回 false。

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

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

于 2014-10-24T23:08:01.913 回答