有没有办法使用多个System.Web.Mvc.RemoteAttributes?获取“重复RemoteAttribute属性”。

时间:2011-03-07 18:38:13

标签: asp.net-mvc-3 viewmodel data-annotations asp.net-mvc-validation

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

1 个答案:

答案 0 :(得分:2)

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