我的视图模型中有2个文本字段text1和text2。我需要验证是否输入了text1然后必须输入text2,反之亦然。如何在视图模型中进行自定义验证?
感谢。
答案 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
上找到它