Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Validation MVC.NET:在控制器和服务(业务)层之间共享验证规则_Validation_Asp.net Mvc 4 - Fatal编程技术网

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

Validation MVC.NET:在控制器和服务(业务)层之间共享验证规则,validation,asp.net-mvc-4,Validation,Asp.net Mvc 4,我正在从事一个项目,在该项目中,我们有多个UI(视图)模型,带有DataAnnotations属性进行验证,主要用于输入,如必填字段、长度、正则表达式等): 在将对象交给服务层之前,控制器会检查ModelState以确保对象有效 现在,服务层还验证对象,以适应未来可能需要新控制器支持其他输出格式或其他实用程序批量导入对象的更改 我的问题是:知道控制器处理UI模型和服务层处理业务对象时应该分离关注点,因此,我不想将UI模型对象传递给服务层,在UI模型对象中重用验证规则的首选方法是什么?还是应该在服

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

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

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

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


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

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

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