我有一个这样的课:
public class Document
{
public int DocumentType{get;set;}
[Required]
public string Name{get;set;}
[Required]
public string Name2{get;set;}
}
现在,如果我在
[Required]
和Name
属性上放置了Name2
数据批注,则一切正常,如果Name
或Name2
为空,则验证将引发错误。但我只希望
Name
等于1时才需要DocumentType
字段和
Name2
仅在DocumentType
等于2时才需要。 public class Document
{
public int DocumentType{get;set;}
[Required(Expression<Func<object, bool>>)]
public string Name{get;set;}
[Required(Expression<Func<object, bool>>)]
public string Name2{get;set;}
}
但我知道我做不到,这会导致错误。我该怎么办?
最佳答案
开箱即用,我认为这仍然是不可能的。
但是我发现了这个promising article about Mvc.ValidationToolkit(也是here,不幸的是this只是alpha,但您可能还可以从此代码中提取所需的方法并自己集成),它包含了听起来不错的属性RequiredIf
,似乎完全符合您的原因:
install-package Microsoft.AspNet.Mvc
中启动MVC项目)using Mvc.ValidationToolkit;
[RequiredIf("DocumentType", 2)]
或[RequiredIf("DocumentType", 1)]
之类的东西,因此,只要name
不等于1或2 name2
或DocumentType
,则对象有效。