2

我需要对视图模型属性执行两个单独的验证。显然,每个属性只能应用一次 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; }
}
4

1 回答 1

2

如果不重写 MVC 处理远程验证的方式,就无法解决这个问题(因为RemoteAttribute不支持每个属性的多个声明)。单个 Remote 属性应指向服务器上执行所有远程验证的方法。您应该在该服务器方法中聚合多个验证类型。您不希望每个属性有多个远程属性的原因是性能,因为每个额外的回调都会产生开销。

于 2011-03-07T19:25:40.050 回答