Как удалить все валидаторы ASP.Net? - PullRequest
2 голосов
/ 02 апреля 2009

Я хочу, чтобы все валидаторы на веб-сайте ASP.Net 3.5 имели значение CssClass "error". Моей первоначальной мыслью было сделать это в скине темы так:

<asp:CompareValidator runat="server" 
    CssClass="error" />
<asp:CustomValidator runat="server" 
    CssClass="error" />
<asp:RequiredFieldValidator runat="server" 
    CssClass="error" />
<belCommon:ZipCodeValidator runat="server" 
    CssClass="error" />
<belCommon:PhoneNumberValidator runat="server" 
    CssClass="error" />

Это только частичный список валидаторов, которые я использую. В идеале я хотел бы сделать что-то вроде этого:

<asp:BaseValidator runat="server" 
    CssClass="error" />

И поскольку все валидаторы наследуются от BaseValidator, я ожидаю, что это будет работать, но это не так. Есть ли способ сделать это без явного добавления каждого отдельного элемента управления валидатора в скин?

Обновление:

Я нашел другой подход, используя javascript:

Sys.Application.add_init(function(sender, args)
{
    if (Page_Validators != null)
    {
        for (i = 0; i < Page_Validators.length; i++)
        {
            Page_Validators[i].className = "error";
        }
    }
});

ASP.Net генерирует переменную javascript под названием Page_Validators, которая представляет собой массив диапазонов проверки. Этот скрипт проверяет, существует ли он, а затем перебирает и задает имя класса. Я добавил это на главную страницу, и пока оно работает.

Ответы [ 3 ]

3 голосов
/ 02 апреля 2009

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

Хотя, судя по всему, вы также создаете свои собственные валидаторы, вы можете изменить свои элементы управления, чтобы иметь класс ошибок cssc по умолчанию, чтобы сэкономить немного времени.

1 голос
/ 08 апреля 2009

Я нашел другой подход с использованием JavaScript:

Sys.Application.add_init(function(sender, args)
{
    if (Page_Validators != null)
    {
        for (i = 0; i < Page_Validators.length; i++)
        {
            Page_Validators[i].className = "error";
        }
    }
});

ASP.Net генерирует переменную javascript под названием Page_Validators, которая является массивом областей проверки. Этот скрипт проверяет, существует ли он, а затем перебирает и задает имя класса. Я добавил это на главную страницу, и пока оно работает.

1 голос
/ 02 апреля 2009

У меня возникнет соблазн перебрать элементы управления страницы в методе загрузки страницы сервера и применить там класс css:

foreach (object obj in this.Controls)
{
  if (obj is BaseValidator)
  {
     ((BaseValidator)obj).CssClass = "error";
  }
}

Возможно, это не лучший способ сделать это, и у меня не было возможности проверить это, но, надеюсь, это поможет вам в этом.

...