我有一个ViewModel,它具有TextBox和Checkbox的属性:
public bool SendAlerts { get; set; }
public string EmailAddress { get; set; }
我需要验证EmailAddress字段(文本框)以确保只有在我的视图(绑定到SendAlerts属性)中的复选框被选中时,才有一个电子邮件地址。
如果未选中该复选框,则EmailAddress文本框是否为空都没有关系。
如何执行此条件验证?我对
DataAnnotations
中的其他一些属性使用了ViewModel
,例如简单的“ Required”注释(但在这种情况下我不能使用它,因为它是有条件的)。我在视图模型中将
CustomValidation
用于其他几个属性,即public static ValidationResult IsTitleValid(object value)
{ ... }
但是,通过这种方法,我只有1个对象值,而不能同时引用复选框和文本框值。
使用MVC解决此问题的最佳方法是什么?
最佳答案
我们最近被迫在工作中做类似的事情,并且找不到比以下更好的解决方案:
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。通过此解决方案,您还可以进行客户端验证。