对两个字段进行asp.net mvc验证 - 如果输入其他字段,则必须存在一个

时间:2012-02-21 03:04:19

标签: asp.net-mvc asp.net-mvc-3 validation

我的视图模型中有2个文本字段text1和text2。我需要验证是否输入了text1然后必须输入text2,反之亦然。如何在视图模型中进行自定义验证?

感谢。

4 个答案:

答案 0 :(得分:8)

您可以在View模型上使用工具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都设置了,或者为null,那么model是有效的,否则,它不是。

答案 1 :(得分:0)

您可以使用JQuery,如下所示:

$("input[x2]").hide();
    $("input[x1]").keypress(function() {
          var textValue = ("input[x1]").val();
         if(textValue) 
                      $("input[x2]").show();
        })

答案 2 :(得分:0)

如果您想在模型上使用数据注释验证器和验证属性,您应该看一下: “attribute dependent on another field

答案 3 :(得分:0)

看看mvc万无一失的验证,它做了条件验证。在nuget或http://foolproof.codeplex.com

上找到它