我需要在视图模型属性上执行两个单独的验证。显然,每个属性只能应用一次RemoteAttribute。这可能是一个愚蠢的问题,但有没有人知道解决这个问题?
public class ForgotPasswordModel
{
// Getting compiler error "Duplicate RemoteAttribute attribute"
[Remote("CanFindEmail", "Account", ErrorMessageResourceName = "EmailNotFound", ErrorMessageResourceType = typeof(ValidationMessages))]
[Remote("IsAccountVerified", "Account", ErrorMessageResourceName = "AccountByEmailNotVerified", ErrorMessageResourceType = typeof(ValidationMessages))]
[Required(ErrorMessageResourceType = typeof(ValidationMessages), ErrorMessageResourceName = "PropertyRequired")]
[Display(ResourceType = typeof(Resx), Name = "PersonEmailAddress")]
public string Email { get; set; }
}
答案 0 :(得分:2)
没有办法解决这个问题(因为RemoteAttribute
不支持每个属性的多个声明),而不重写MVC处理远程验证的方式。单个Remote属性应指向服务器上执行所有远程验证的方法。您应该在该服务器方法中聚合多个验证类型。您不希望每个属性有多个远程属性的原因是性能,因为每个额外的回调都会产生开销。