Проверка текстового поля, только если флажок установлен с использованием MVC - PullRequest
1 голос
/ 07 августа 2011

У меня есть ViewModel со свойствами для TextBox и флажок:

public bool SendAlerts { get; set; }
public string EmailAddress { get; set; }

Мне нужно проверить поле EmailAddress (текстовое поле), чтобы убедиться, что есть адрес электронной почты ТОЛЬКО, если флажок в моем представлении (который привязывается к свойству SendAlerts) проверяется.Если флажок не установлен, то не имеет значения, является ли текстовое поле EmailAddress пустым.

Как мне выполнить эту условную проверку?Я использую DataAnnotations против некоторых других свойств в моем ViewModel, как прямую аннотацию «Требуется» (но я не могу использовать это для этого сценария, поскольку она условна).

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

public static ValidationResult IsTitleValid(object value)
{ ... }

Однако у меня есть только 1 значение объекта с этим подходом, вместо того, чтобы иметь возможность ссылаться как на значения флажка, так и на значения текстового поля.

Как лучше всего подойти к этому с помощью MVC?

1 Ответ

4 голосов
/ 07 августа 2011

Недавно мы были вынуждены делать подобные вещи на работе, и не смогли найти лучшего решения, чем следующее: http://blogs.msdn.com/b/simonince/archive/2010/06/04/conditional-validation-in-mvc.aspx

Обновлен до MVC3 здесь: http://blogs.msdn.com/b/simonince/archive/2011/02/04/conditional-validation-in-asp-net-mvc-3.aspx

В основном выввести новый атрибут RequiredIf.С этим решением вы также получаете проверку на стороне клиента.

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