使用代码约定在ASP.NET MVC中进行验证

时间:2010-07-31 08:53:53

标签: validation asp.net-mvc-2 code-contracts

我想知道使用“代码约定”属性作为ASP.NET MVC 2中的验证规则的可用选项。

2 个答案:

答案 0 :(得分:2)

您可以通过自定义运行时检查器来完成此操作。

虽然可以将Code Contracts调整为用作验证框架,但我会建议不要这样做。它是调整运行时检查程序的更高级功能之一,更重要的是,不是为代码合同做的。

代码合同基本上是一种在项目中集成Design by Contract的方法。虽然其目的之一是针对您的类设计验证您的代码,但它不是验证框架

在我看来,你应该在另一个真正的验证框架旁边使用它。

在开始使用代码合同之前,建议您阅读用户手册here。它包含所有信息,包括如何自定义运行时检查程序。

答案 1 :(得分:1)

是的,“代码合同”的主要目的是根据我的类设计验证我的代码,但它也描述了我的对象的有效状态。

所有我能想到的验证方案都属于这三种类型:

  1. 输入验证(UI验证)
  2. 域名验证(DbC)
  3. 输出验证(持久性 验证,例如:NHibernate Validator
  4. 我认为验证是一个逻辑问题,目标对象是否处于有效状态。

    DbC有三个部分,

    1. 验证规则
    2. 静态检查器
    3. 运行时检查程序
    4. 第一部分(规则)在所有三种验证方案中都很常见。当我使用“代码契约”使用“Not Null”标记属性来验证其设计时,使用“System.ComponentModel.DataAnnotations”为MVC(UI验证)标记“非空”是不是很难看?

      抽象地说,有效状态的定义是核心,验证框架和“代码合同”的共享部分提供了它,还有一个额外的域名设计的“静态Cheker”(不是I / O)。