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" (което означава, че вашите контроли за валидиране ще показват само своето съобщение за грешка в свързаната с тях контрола 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