【问题标题】:How to handle service-layer validation in MVC3如何在 MVC3 中处理服务层验证
【发布时间】:2010-10-21 17:29:23
【问题描述】:

我正在开展一个项目,该项目需要为同一模型设置不同的验证集,我们正在努力寻找最佳解决方案来处理它。

一个简化的例子可能是使用我们的客户 DTO:

public class Customer
{
    [Required]
    public string FirstName { get; set; }

    [Required]
    public string LastName { get; set; }

    [Required] // Only required on some views
    public string Title { get; set; }
}

在我们的第一个视图中,所有字段都是必需的,因为它们在 DTO 中使用 DataAnnotations 显示。

在我们的第二个视图中,FirstName 和 LastName 可能是必需的,但 Title 是可选的,甚至可能不会出现在视图上。

复杂之处在于,我们希望在我们的服务层中存在验证规则(以便我们可以在稍后使用相同的验证提供 API),它可以访问数据注释并针对它们进行验证,如果他们不验证,则向 UI 报告。

到目前为止,中奖方式是:

  • 每个视图都有一个专用的视图模型,DataAnnotations 存在于该视图模型上。
  • 然后视图模型使用 Automapper 之类的东西映射我们的域对象。
  • 然后将域对象传递到存储库和服务以对其执行操作。

这也意味着:

  • 验证不会发生在服务层,因为当对象到达那里时,它们将是域对象而不是视图模型。

是否有更好的方法来处理企业应用程序?我们还没有找到解决方案。

【问题讨论】:

    标签: validation architecture asp.net-mvc-3


    【解决方案1】:

    当验证特定于上下文时,您不能将所有验证都塞到一个地方。使用您的获胜方法,但也要让您的实体服务在该层进行适当的验证。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-19
      • 1970-01-01
      • 1970-01-01
      • 2021-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多