我有一个ViewModel,其中包含TextBox和Checkbox的属性:
public bool SendAlerts { get; set; }
public string EmailAddress { get; set; }
我需要验证EmailAddress字段(文本框)以确保仅在我的视图中的复选框(绑定到SendAlerts属性)被选中时才有电子邮件地址。 如果未选中该复选框,则EmailAddress文本框是否为空无关紧要。
如何实施此条件验证?我对DataAnnotations
中的其他一些属性使用ViewModel
,就像一个直接的'必需'注释(但我不能在这种情况下使用它,因为它是有条件的)。
我在视图模型中使用了CustomValidation
来表示其他几个属性,即
public static ValidationResult IsTitleValid(object value)
{ ... }
但是,这种方法只有1个对象值,而不能同时引用复选框和文本框值。
使用MVC解决此问题的最佳方法是什么?
答案 0 :(得分:4)
我们最近被迫在工作中做类似的事情,找不到比以下更好的解决方案: 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。使用此解决方案,您还可以获得客户端验证。