несколько элементов управления сводкой проверки на одной и той же странице, исчезает сообщение сводки проверки

У меня есть два элемента сводки проверки на одной странице. У обоих разные группы проверки. пожалуйста, посмотрите код ниже.

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

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:ValidationSummary ID="ValidationSummary1" runat="server" ValidationGroup="g1"/>
            <asp:Label ID="Label1" runat="server" Text="label1"></asp:Label>
            <asp:TextBox ID="TextBox1" runat="server" Text="A"></asp:TextBox>
            <asp:CustomValidator ID="CustomValidator1" runat="server" ValidationGroup="g1" OnServerValidate="CustomValidator1_ServerValidate">*</asp:CustomValidator>
            <br />
            <asp:Button ID="Button1" runat="server" Text="Button" ValidationGroup="g1" CausesValidation="false" OnClick="Button1_Click" />
            <br />
            <asp:ValidationSummary ID="ValidationSummary2" runat="server" ValidationGroup="g2"/>
            <asp:Label ID="Label2" runat="server" Text="label1"></asp:Label>
            <asp:TextBox ID="TextBox2" runat="server" Text="B"></asp:TextBox>
            <asp:CustomValidator ID="CustomValidator2" runat="server" ValidationGroup="g2" OnServerValidate="CustomValidator2_ServerValidate">*</asp:CustomValidator>
            <br />
            <asp:Button ID="Button2" runat="server" Text="Button" ValidationGroup="g2" CausesValidation="false" OnClick="Button2_Click" />
            <br />
        </div>
    </form>
</body>
</html>

код позади

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

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

        }

        protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
        {
            args.IsValid = true;

            int num;
            if(!(int.TryParse(TextBox1.Text, out num)))
            {
                CustomValidator1.ErrorMessage = "cv1 msg";
                args.IsValid = false;
            }
        }

        protected void CustomValidator2_ServerValidate(object source, ServerValidateEventArgs args)
        {
            args.IsValid = true;

            int num;
            if (!(int.TryParse(TextBox2.Text, out num)))
            {
                CustomValidator2.ErrorMessage = "cv2 msg";
                args.IsValid = false;
            }
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            Page.Validate("g1");
            if(this.Page.IsValid)
                Response.Write("button1 success");
            else
                Response.Write("button1 falied");
        }

        protected void Button2_Click(object sender, EventArgs e)
        {
            Page.Validate("g2");
            if (this.Page.IsValid)
                Response.Write("button2 success");
            else
                Response.Write("button2 falied");
        }
    }
}

Теперь, когда я нажимаю кнопку 1, он проверяет группу проверки "g1" и показывает

введите описание изображения здесь

И при нажатии на button2 он проверяет группу проверки "g2" и показывает

введите описание изображения здесь

хммммммм, но я не хочу терять сообщение сводки проверки 1 (группа g1) при нажатии на кнопку2.

Кроме того, я не хочу проверять обе группы g1 и g2 при событии щелчка.

Почему я теряю сообщение проверки g1 при нажатии кнопки button2.


person Maddy    schedule 16.06.2015    source источник


Ответы (1)


Это потому, что в любом событии щелчка происходит только одна проверка. Вы можете проверить обе проверки в обоих событиях щелчка. Или вставьте оба в событие перезагрузки страницы.

person Chand Priyankara    schedule 16.06.2015
comment
фактически в приложении событие button2 проверяет и g1, и g2. Но button1 просто проверяет g1. Теперь, если пользователь сначала нажимает на button2, отображается все сообщение об ошибке, но затем пользователь нажимает на button1, он удаляет сообщение об ошибке для текстового поля1. он должен только удалить сообщение textbox2. - person Maddy; 16.06.2015
comment
Так что проблема в последовательности. Поэтому вы можете использовать переменную [common], чтобы определить состояние событий пользователя и добиться цели. - person Chand Priyankara; 16.06.2015
comment
Спасибо, что подтолкнули меня к этому, я думал об этом. - person Maddy; 16.06.2015