ASP.NET MVC 2模型验证可以处理属性包吗?

时间:2010-12-08 21:10:31

标签: asp.net-mvc-2 properties asp.net-mvc-2-validation

我一直在阅读有关ASP.NET MVC 2模型验证的内容,我很喜欢它会自动将相同的规则应用于客户端和服务器端对象。但是,我见过的所有示例都使用了自定义模型对象。我正在开发的一个设计使用属性包(key->值对的列表,如字典),每个都可以有不同的验证。

例如

  • 发票编号:AlphaNumeric,精确10个字符
  • 用户名:少于50个字符。
  • 发票金额:金钱。

ASP.NET MVC 2模型验证是否可以验证这些规则,是否有自定义验证引擎?

1 个答案:

答案 0 :(得分:1)

  

ASP.NET MVC 2模型验证   验证这些规则,有或没有   自定义验证引擎?

对不起我的上一个答案,这有点模糊。对于任何长度或字符数验证,常规表达式是关键。但是你的情况有点不同。

这里可以使用mvc 2模型验证做什么:

   1. using System;  
   2. using System.ComponentModel.DataAnnotations;  
   3.   
   4. namespace FunWithMvc2RC2  
   5. {  
   6.     public class Test  
   7.     {  
   8.         // StringLenght  
   9.         [StringLength(5, ErrorMessage = "Maximum 25 Characters")]  
  10.         public string StringLength { get; set; }  
  11.   
  12.         // Required  
  13.         [Required(ErrorMessage = "Required Field")]  
  14.         public string Required { get; set; }  
  15.   
  16.         // Required and StringLenght  
  17.         [Required(ErrorMessage = "Required Field")]  
  18.         [StringLength(5, ErrorMessage = "Maximum 25 Characters")]  
  19.         public string Combos { get; set; }  
  20.   
  21.         // Range Attribute  
  22.         [Range(1, 31, ErrorMessage = "Minimum 1; Maximum 31")]  
  23.         public int Range { get; set; }  
  24.   
  25.         // RegularExpression Attribute  
  26.         [RegularExpression(@"^(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9]+@((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6}$", ErrorMessage = "Invalid Email Address")]  
  27.         public string Regex { get; set; }  
  28.   
  29.         // Custom Regular Expression EmailAttribute  
  30.         [Email(ErrorMessage = "Email Validation")]  
  31.         public string Email { get; set; }  
  32.     }  
  33. }  

所以我会说,对于使用密钥列表和所有这些内置验证的自定义内容,使用MVC 2中包含的默认验证规则是不可能的。您需要制定自己的验证规则。请参阅http://haacked.com/archive/2009/11/19/aspnetmvc2-custom-validation.aspx上的自定义模型验证。

希望有所帮助。