【问题标题】:MVC.NET: Sharing validation rules between controllers and the service (business) layerMVC.NET:在控制器和服务(业务)层之间共享验证规则
【发布时间】:2012-12-11 22:11:29
【问题描述】:

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

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

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

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

我的问题是:知道在控制器处理 UI 模型和服务层处理业务对象的地方应该分离关注点,因此,我不想传递 UI 模型对象对于服务层,在 UI 模型对象中重用验证规则的首选方式是什么?还是应该使用服务层中的代码来复制它们?还是应该将DataAnnotations 也添加到业务对象中?

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

【问题讨论】:

    标签: validation asp.net-mvc-4


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2016-03-18
      • 1970-01-01
      • 2017-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 2010-11-01
      相关资源
      最近更新 更多