2

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

例如

  • 发票编号:字母数字,正好 10 个字符
  • 用户名:少于 50 个字符。
  • 发票金额:钱。

ASP.NET MVC 2 模型验证是否可以使用或不使用自定义验证引擎来验证这些规则?

4

1 回答 1

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上的自定义模型验证。

希望有所帮助。

于 2011-01-14T22:11:40.877 回答