2012-04-16 68 views
1

在问实际问题之前,我只想说,这是一个要求,我们的客户正在用牙齿和指甲为之奋斗,所以有更好的方法来完成 - 这有些答案,尽管我知道有更好的方法来做到这一点,但在这种情况下无济于事。CompareAttribute错误优先于RequiredAttribute之一

我有如下定义视图模型:

public class MyVm 
{ 
    [Required] 
    public string Email{get;set;] 

    [Required] 
    [Compare("Email")] 
    public string EmailConfirmation{get;set; 
} 

当我们测试了一下,如果我们在电子邮件字段中输入一个值,但不能在EmailConfirmation一个我们得到的领域-DO-不可─匹配错误,这是非常好的,但客户ABSOLUTELY希望看到“确认字段是必需的”错误,当它是空的,并且只有当两个字段都有数据并且它们不匹配时才会看到“字段不匹配”。

有没有一种方法可以通过注释完成此操作?

注意:我们正在使用MVC 3

感谢您的帮助。

回答

0

也许你可以编写自己的属性。类似这样的:

[AttributeUsage(AttributeTargets.Property, AllowMultiple = false)] 
public class CompareAndValidateAttribute : CompareAttribute 
{ 
    public override bool IsValid(object value) 
    { 
     return base.IsValid(value) && !string.IsNullOrEmpty((string)value); 
    } 
} 
0

您可以随时编写自己的自定义验证属性来处理这种情况。这是一个体面的article,它给出了一个使用自定义属性处理自定义验证的示例。