我如何在MVC3中使用依赖字段验证

时间:2011-11-01 01:35:36

标签: asp.net-mvc-3 validation

我在类的字段上使用validation属性,并且具有如下要求: 如果字段'a'验证成功,则处理字段'b'的验证,但如果字段'a'不是抛出验证,则忽略字段'b'的验证。
它是否可行或我应该以其他方式思考?

public class myclass
{
[required]
public string a{get;set;}
[required]
public string b{get;set;]
}

我想: 1.如果通过验证,则执行b的验证 2.如果没有通过验证,则不执行b的验证

2 个答案:

答案 0 :(得分:2)

查看MVC.ValidationToolkit

http://blogs.msdn.com/b/simonince/archive/2011/09/29/mvc-validationtookit-alpha-release-conditional-validation-with-mvc-3.aspx

它包含这两个可以帮助你的验证。

  • RequiredIfAttribute。该属性表示“如果某个其他字段的值为X,则需要此字段”。它用作[RequiredIf(“OtherField”,“TargetValue”)]
  • RequiredEmptyIfAttribute。此属性表示“如果某个其他字段的值为X,则此字段必须为空”。它用作[RequiredEmptyIf(“OtherField”,“TargetValue”)]

答案 1 :(得分:0)

在模型中实现IValidateableObject接口以包含自定义验证逻辑。由于您无法以您请求的方式应用验证检查,因此您需要使用自己的自定义验证。我不认为迈克尔的建议(尽管是一个好的)如果你真的需要通过属性说'只要它是有效的,通过属性验证别的',但这可以通过这个界面轻松完成。但请注意,这只是服务器端验证,除非您也想为此编写自己的客户端部分。