MVC.NET:在控制器和服务(业务)层之间共享验证规则

时间:2012-12-11 22:11:29

标签: validation asp.net-mvc-4

我正在开发一个项目,我们有多个用于验证的DataAnnotations属性的UI(视图)模型,主要用于输入,如必填字段,长度,正则表达式等):

[Required]
public int Order { get; set; }
[Required]
[MaxLength(150)]
public string Title { get; set; }

控制器检查ModelState以确保对象在将它们交给服务层之前有效。

现在,服务层还验证对象,以适应将来可能需要新控制器支持其他输出格式的更改,或者另一个实用程序批量导入对象。

我的问题是:知道控制器处理UI模型和服务层处理Business Objects的问题应该分开,因此,我不想传递UI将对象建模到服务层,在UI模型对象中重用验证规则的首选方法是什么?或者它们是否应该与服务层中的代码一起复制?或者是否应将DataAnnotations添加到Business Objects中?

我首先使用 EF模型,因此我没有看到将这些注释添加到自动生成的POCO的简单方法。

1 个答案:

答案 0 :(得分:0)

为什么不使用FluentValidation?这样,您可以为每个视图模型创建验证器,并在需要时在UI层和服务层中运行它们。它还消除了使用验证属性修饰视图模型的需要。 http://fluentvalidation.codeplex.com/