仅在使用MVC选中复选框时才验证文本框

时间:2011-08-07 17:36:00

标签: c# asp.net-mvc model-view-controller validation

我有一个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解决此问题的最佳方法是什么?

1 个答案:

答案 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。使用此解决方案,您还可以获得客户端验证。