在[MetadataType]中使用“Remote”属性

时间:2013-01-20 12:45:03

标签: asp.net-mvc-4 data-annotations metadatatype

我使用[MetadataType]类上的[Remote]属性收到错误。我收到以下错误: 错误15属性“远程”在此声明类型上无效。它仅对'property,indexer'声明有效。

我理解错误在说什么,我只是不明白为什么[Remote]不起作用,但其他属性工作正常。

[MetadataType(typeof(StudentRowMeta))]  
public class StudentRow
{
    public string Login { get; set; }
}

public class StudentRowMeta
{
    [Required(ErrorMessage = "Please Enter Login")]
    [StringLength(50, ErrorMessage = "Login can not be more than 50 characters")]
    [Remote("IsLoginAvailable", "Validation")]
    public object Login;
} 

1 个答案:

答案 0 :(得分:1)

在Remote属性的定义中:

  [AttributeUsage(AttributeTargets.Property)]
  public class RemoteAttribute : ValidationAttribute, IClientValidatable { ...

您只能将原始RemoteAttribute与属性一起使用。但是,没有什么能阻止使用后代的新属性定义:

[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field)]
public class MyRemoteAttribute : RemoteAttribute
{
    public MyRemoteAttribute(string action, string controller)
        : base(action, controller)
    {
    }
    public MyRemoteAttribute(string action, string controller, string area)
        : base(action, controller, area)
    {
    }
}

它对我来说很有用。