Asp.net mvc 4 MVC4,确定并调用自定义验证器

Asp.net mvc 4 MVC4,确定并调用自定义验证器,asp.net-mvc-4,validation,Asp.net Mvc 4,Validation,我需要在业务层验证我的模型。因此,我的类中有一个自定义验证器: [MetadataType(typeof(ToolMetaData))] public partial class Tool { public string PartNumber { get; set; } } public class ToolMetaData { [Required] [ValidPartNumber] public string PartNumber { get; set; } }

我需要在业务层验证我的模型。因此,我的类中有一个自定义验证器:

[MetadataType(typeof(ToolMetaData))]
public partial class Tool
{
   public string PartNumber { get; set; }
}
public class ToolMetaData
{
    [Required]
    [ValidPartNumber]
    public string PartNumber { get; set; }
}
public class ValidPartNumberAttribute : ValidationAttribute
{
    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
       ....
    }
}
我需要确定类的某个字段是否定义了ValidPartNumber验证器,并调用它

对于所需的验证器,我使用以下内容:

Tool t = new Tool();
ModelMetadata metadata = ModelMetadataProviders.Current.GetMetadataForProperty(null, 
                                                  t.GetType(), "PartNumber");
if (metadata.IsRequired)
{
  validate..
}
但我如何确定我的字段是否定义了ValidPartNumber验证器,然后调用if

我是否需要自定义DataAnnotationsModelMetadataProvider和DataAnnotationsModelValidator

有很多钱


Alex不清楚你想做什么。[ValidPartNumber]的用途是什么?使用[ValidPartNumber]我正在验证模型中的字段公共字符串PartNumber。当我发布我的观点时,这很好。但是我在我的案例xml文件中从外部源创建了我的模型工具,我需要使用Metadatasal中定义的验证器[ValidPartNumber]来验证我的模型工具,直到不清楚您的尝试要做什么。您指的是哪种元数据?我看不出DataAnnotationsModelMetadataProvider与您的问题有什么关系。只是猜测,但是如果您希望客户端验证查找外部源以检查用户是否输入了有效的零件号,则使用[Remote]属性