1

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

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

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

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

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

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

4

1 回答 1

0

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

于 2012-12-11T22:26:52.517 回答