Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
自定义数据验证批注-ASP.NET MVC2 C#_C#_Asp.net_Asp.net Mvc_Attributes - Fatal编程技术网

自定义数据验证批注-ASP.NET MVC2 C#

自定义数据验证批注-ASP.NET MVC2 C#,c#,asp.net,asp.net-mvc,attributes,C#,Asp.net,Asp.net Mvc,Attributes,我有一个viewmodel,部分看起来像这样 [Required] public int Year { get; set; } [Required] [Range(1, 5000000)] public int ModelID { get; set; } [Required] public int ZipCode{ get; set;} 我想添加一个自定义验证器属性,用于检查数据

我有一个viewmodel,部分看起来像这样

        [Required]
        public int Year { get; set; }

        [Required]
        [Range(1, 5000000)]
        public int ModelID { get; set; }

        [Required]
        public int ZipCode{ get; set;}
我想添加一个自定义验证器属性,用于检查数据库以确保Zip有效。类似于

        [Required]
        [IsValidZipcode]
        public int ZipCode{ get; set;}
我还没能在网上找到一个教程——我不知道该搜索什么,因为这似乎很常见


我应该怎么做呢?

您可以扩展
ValidationAttribute
,如中所示
ValidationAttribute
有一个IsValid()方法,您可以重写该方法以指示模型的有效性。

您可以扩展
ValidationAttribute
,如中所示
ValidationAttribute
有一个方法IsValid(),您可以重写该方法以指示模型的有效性。

只需创建一个从ValidationAttribute类继承的类,验证IsValid方法:

public class IsValidZipCode: ValidationAttribute
{
   public override bool IsValid(object value)
   {
      return db.ValidateSomething(value);
   }
}
那你就可以走了:

[IsValidZipCode(ErrorMessage = "Not a valid zip code!")]
public int ZipCode { get; set; }

只需创建一个从ValidationAttribute类继承的类,验证IsValid方法:

public class IsValidZipCode: ValidationAttribute
{
   public override bool IsValid(object value)
   {
      return db.ValidateSomething(value);
   }
}
那你就可以走了:

[IsValidZipCode(ErrorMessage = "Not a valid zip code!")]
public int ZipCode { get; set; }

+我感谢你没有获得投票权,尽管你以30秒的优势击败了我呵呵,谢谢。你的答案更好——人们不喜欢阅读:我没有注意到你是第一个。但是是的。。复制+粘贴更容易+1+1感谢你没有获得投票权,尽管你以30秒的优势击败了我。:)呵呵,谢谢。你的答案更好——人们不喜欢阅读:我没有注意到你是第一个。但是是的。。复制+粘贴更容易+1.