Как переопределить DataAnnotations Обязательный тег, чтобы разрешить условную проверку на стороне клиента - PullRequest
1 голос
/ 11 октября 2010

Я использую теги DataAnnotations для проверки на стороне клиента в ASP.NET MVC2. Я использую тег Required , но в моем случае пометка поля как обязательного не всегда является абсолютной. У меня есть другие условия, которые определяют, является ли поле обязательным или нет.

Можно ли переопределить требуемый тег, чтобы разрешить эту условную логику?

Я бы хотел сделать что-то вроде этого:

public class ConditionalRequiredAttribute : RequiredAttribute
{
    public ConditionalRequiredAttribute(string someParameter)
    {
        //Logic to determine if this field is required.
    }
}

А затем используйте этот атрибут следующим образом:

[ConditionalRequired("some parameter info")]
public virtual string EMailAddress { get; set; }

Любые предложения о том, как заставить это работать для проверки на стороне клиента?

Спасибо!

1 Ответ

3 голосов
/ 11 октября 2010

Я бы порекомендовал не использовать [Обязательный] для этого, так как [Обязательный] и подклассные типы имеют специальное значение: всегда обязательно - не требуется условно.

Вы можете создать свой собственный атрибут, который подклассов ValidationAttribute и содержит информацию проверки на стороне клиента. Есть несколько доступных ресурсов для того, чтобы написать собственный код проверки на стороне клиента. Например, см .:

В MVC 3 вы можете использовать IClientValidatable для этого, что делает жизнь немного проще. См. https://blogs.msdn.microsoft.com/stuartleeks/2010/07/28/asp-net-mvc-adding-client-side-validation-to-validatepasswordlengthattribute-in-asp-net-mvc-3-preview-1/ для примера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...