在询问实际问题之前,我只是想说这是一个要求,我们的客户正在用牙齿和指甲来对抗它,所以有更好的方法来完成 - 这种答案,即使我知道有更好的方法可以做到这一点,在这种情况下无济于事。
我有一个具有以下定义的视图模型:
public class MyVm
{
[Required]
public string Email{get;set;]
[Required]
[Compare("Email")]
public string EmailConfirmation{get;set;
}
当我们测试它时,如果我们在电子邮件字段中输入一个值而不是在EmailConfirmation中输入一个值,我们会得到字段不匹配错误,这很好,但客户绝对想看到“确认字段”是必填的“错误,当它为空时,只有当两个字段都有数据并且它们不匹配时,才能看到”字段不匹配“。
有没有办法用注释来完成这个?
注意:我们正在使用MVC 3。
感谢您的帮助。
答案 0 :(得分:0)
您始终可以编写自己的自定义验证属性来处理此方案。这是一个不错的article,它提供了一个使用自定义属性处理自定义验证的示例。
答案 1 :(得分:0)
也许你可以编写自己的属性。像这样:
[AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
public class CompareAndValidateAttribute : CompareAttribute
{
public override bool IsValid(object value)
{
return base.IsValid(value) && !string.IsNullOrEmpty((string)value);
}
}