MVC 2:跨领域自定义验证

时间:2010-08-17 09:57:35

标签: asp.net-mvc

我需要进行一些验证,其中必须输入2个字段中的1个。 在MVC 2中做到这一点最好的是什么?

字段是;

<%: Html.EditorFor(model => model.contract.ClientOrderNumber)%>

<%: Html.TextAreaFor(model => model.contract.InstructionWithoutClientOrder, 
                        new { maxlength = "255", style = "width:200px;height:100px;"})%>

1 个答案:

答案 0 :(得分:2)

您必须将验证属性添加到模型的CLASS中。

[AttributeUsage(AttributeTargets.Class)]
public class SomeValidationAttribute : ValidationAttribute 
{
    public override bool IsValid(object value)
    {
        //value contains your complete model!
        MyViewModel model = (MyViewModel) value;

        return !string.IsNullOrWhiteSpace(model.X) || !string.IsNullOrWhiteSpace(model.Y)
    }
}

在你的viewmodel上:

[SomeValidation]
public class MyViewModel
{
    public string X { get; set; }
    public string Y { get; set; }
}