валидация asp.net mvc на 2 поля - одно должно существовать, если другое введено - PullRequest
2 голосов
/ 21 февраля 2012

У меня есть 2 текстовых поля, text1 и text2, в моей модели представления.Мне нужно проверить, если текст1 введен, то текст2 должен быть введен, и наоборот.Как этого можно достичь в пользовательской проверке в модели представления?

спасибо.

Ответы [ 4 ]

8 голосов
/ 21 февраля 2012

Вы можете использовать агрегат IValidatableObject (из System.ComponentModel.DataAnnotations пространства имен) для проверки на стороне сервера в вашей модели представления:

public class AClass : IValidatableObject 
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string SecondName { get; set; }
        public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
        {
            if( (!string.IsNullOrEmpty(Name) && string.IsNullOrEmpty(SecondName)) || (string.IsNullOrEmpty(Name) && !string.IsNullOrEmpty(SecondName)) )
                yield return new ValidationResult("Name and Second Name should be either filled, or null",new[] {"Name","SecondName"});
        }
    }

Теперь убедитесь, что для параметра Name и SecondName задано нулевое значение, тогда модель действительна, в противном случае - нет.

0 голосов
/ 19 сентября 2012

Посмотрите на проверку правильности mvc, она выполняет условную проверку. Найти его на nuget или http://foolproof.codeplex.com

0 голосов
/ 19 сентября 2012

Если вы хотите использовать валидатор аннотации данных и атрибуты валидации в вашей модели, вам следует взглянуть на это: « атрибут зависит от другого поля »

0 голосов
/ 21 февраля 2012

Вы можете использовать JQuery, что-то вроде этого:

$("input[x2]").hide();
    $("input[x1]").keypress(function() {
          var textValue = ("input[x1]").val();
         if(textValue) 
                      $("input[x2]").show();
        })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...