1

DataAnnotations验证发生在默认的模型联编程序中,我见过的大多数示例都使用控制器中的Model.IsValid来验证模型是否有效。由于我的控制器操作调用业务层的方法,我想验证实体有:MVC验证和业务层

  1. 我必须明确地关闭 模型绑定验证?
  2. 如何验证 业务层中的实体。换句话说,如果 对象是 对象,我会触发验证吗?
  3. 此外,我正在使用查看模型。我是否在 视图模型中添加验证属性?如果是这样,由于查看模型 与UI相关联,那么在业务层验证 ?

回答

3

我要开始回答你的问题#3:是的,当使用视图模型时,在视图模型的属性上添加Data Annotation验证属性。正如您所指出的那样,视图模型与UI绑定在一起,因此它们具有表示方面的问题,验证仅限于UI输入验证。您在此应用的验证属性将由框架自动调用,并且您可以在控制器中检查ModelState.IsValid(您也指出了这一点)。

关于验证业务层中的对象,有许多方法可以做到这一点。例如,您也可以在业务层域模型实体上使用数据注释。您也可以使用其他框架,如企业库验证应用程序块,Fluent Validation等。但在这种情况下,您可能会进行明确的调用以验证您的域对象(并且每个框架都有其自己的机制所以)。我假设您的视图模型和领域模型(可能与类似AutoMapper的东西)之间的映射给出了上面的描述。

说了这么多,关于您的问题#1,我不会关闭模型绑定器验证。让性能在视图模型上进行验证是正常的。将您的视图模型映射到您的领域模型类。然后随意为您的域模型执行额外的业务对象验证层。你甚至可能不会在MVC项目中进行这种验证 - 这可能被封装在一个业务层中,而你的应用中还有其他地方。