ValidationSummary не отображает сообщение об ошибке на стороне сервера после назначения группы

У меня есть элемент управления ValidationSummary, который изначально работал со всеми моими элементами управления проверкой в ​​начале, однако позже, когда я назначил свои элементы управления проверкой группам, т. е. дал им имя группы в атрибуте ValidationGroups, он, похоже, не показывает сообщения об ошибках элементов управления проверкой, которые не проходят проверку на стороне сервера. Я использую вызов Page.Validate() для проверки всех элементов управления на стороне сервера. Кто-нибудь сталкивался с этой проблемой раньше?

Я немного поэкспериментировал с простой страницей и заметил, что это происходит, когда вы назначаете CustomerValidator группе, но проблема исчезает без группы.

Вот Start.aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Start.aspx.cs" Inherits="WebApplication3.Start" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
        <asp:Button ID="Button1" runat="server" Text="Button" CausesValidation ="true" OnClick="Button1_Click" style="height: 26px"/>
        <asp:ValidationSummary ID="ValidationSummary1" runat="server" />
        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="TextBox1" ValidationGroup="Group1" Display="None" ErrorMessage="RequiredFieldValidator1"></asp:RequiredFieldValidator>
        <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="TextBox2" ValidationGroup="Group2" Display="None" ErrorMessage="RequiredFieldValidator2"></asp:RequiredFieldValidator>
        <asp:CustomValidator ID="CustomValidator1" runat="server" ControlToValidate="TextBox2" Display="None" ValidationGroup="Group2" ErrorMessage="Message for display in validation summary" OnServerValidate="cusCustom_ServerValidate"></asp:CustomValidator>
    </div>
    </form>
</body>
</html>

Вот Start.aspx.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication3
{
    public partial class Start : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void cusCustom_ServerValidate(object sender, ServerValidateEventArgs e)
        {
            e.IsValid = false;
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            Page.Validate();
        }
    }
}

person methon.dagger    schedule 30.06.2015    source источник
comment
можешь показать свой код?   -  person Sain Pradeep    schedule 30.06.2015
comment
@SainPradeep, добавлено в код для вас.   -  person methon.dagger    schedule 01.07.2015


Ответы (1)


Когда вы назначаете ValidationGroups для RequiredFieldValidators и CustomValidators, вам также необходимо назначить ValidationGroup для вашего ValidationSummary, поскольку вы используете Display="None" (что означает, что ваши элементы управления проверки будут отображать только свое ErrorMessage в связанном с ними элементе управления ValidationSummary).

Поскольку у вас есть Group1 и Group2, вам нужно добавить 2 элемента управления ValidationSummary, один для Group1, а другой для Group2. Нравится...

<asp:ValidationSummary ID="ValidationSummary1" runat="server" ValidationGroup="Group1" />
<asp:ValidationSummary ID="ValidationSummary2" runat="server" ValidationGroup="Group2" />

Следует также отметить, что CustomValidators будут проверяться только после RequiredFieldValidators, поэтому вы не увидите сообщение об ошибке от вашего CustomValidator, пока ваши RequiredFieldValidators не пройдут проверку.

Надеюсь это поможет.

person Scotty    schedule 01.07.2015
comment
Проблема, с которой я сейчас сталкиваюсь, когда добавляю новый элемент управления ValidationSummary для каждой из указанной группы, заключается в том, что он отображает сообщение об ошибке для элементов управления, принадлежащих другим группам. Поэтому я получаю повторяющееся сообщение об ошибке в каждом из новых ValidationSummary, которые я добавил. - person methon.dagger; 01.07.2015
comment
Похоже, вы неправильно настроили свои группы. Ознакомьтесь с этим сообщением stackoverflow.com /questions/6595546/, в котором более подробно рассматривается обработка ValidationGroups. - person Scotty; 01.07.2015