Краткий обзор валидации ASP.NET

есть ли какой-нибудь способ заставить сводный элемент проверки ASP.NET просто отображать HeaderText при наличии ошибки проверки?

В основном то, что я хочу, просто для простого сообщения типа "Пожалуйста, заполните все поля, отмеченные *", чтобы появиться рядом с кнопкой отправки. Поскольку я использую "*" для сообщения об ошибке на валидаторах, я не хочу, чтобы они отображались в сводке.

Спасибо за любую помощь.

Ответ 1

Установите для всех валидаторов Текст значение "*" и ErrorMessage в пустую строку.

<form id="form2" runat="server">
Name:<br />
<asp:TextBox ID="NameTextBox" runat="server" />
<asp:RequiredFieldValidator 
    ID="NameTextBoxRequiredValidator" 
    ControlToValidate="NameTextBox"
    ErrorMessage="" 
    Text="*" 
    runat="server" />
<br />
City:<br />
<asp:TextBox ID="CityTextBox" runat="server" />
<asp:RequiredFieldValidator 
    ID="CityTextBoxRequiredValidator" 
    ControlToValidate="CityTextBox"
    ErrorMessage="" 
    Text="*" 
    runat="server" />
<br />
<asp:Button ID="SubmitButton" Text="Submit" runat="server" />
<hr />
<asp:ValidationSummary 
    ID="valSum" 
    DisplayMode="SingleParagraph" 
    HeaderText="Please complete all fields marked *"
    runat="server" />
</form>

Ответ 2

Если вы просто используете свойство Text для своих элементов управления проверки и оставьте свойство ErrorMessage пустым, это должно решить вашу проблему.

Ответ 3

Вы можете использовать CustomValidator и установить для свойства ClientValidationFunction функцию JavaScript, которая будет заполнять ярлык для отображения вашего сообщения.

ASPX:

 <asp:CustomValidator ID="validator" runat="server" ErrorMessage="*" ClientValidationFunction="Validate" ControlToValidate="controltovalidate" ValidateEmptyText="true"></asp:CustomValidator>

JavaScript:

function Validate(sender,args)
{
    args.IsValid = true;
    if(args.Value == "")
    {
        document.getElementById('YourCustomMessageLabel').innerText = "Please complete all fields marked *"
        args.IsValid = false;    
    }
}