【问题标题】:Proper way to validate model in ASP.NET MVC 2 and ViewModel apporach在 ASP.NET MVC 2 和 View Model 方法中验证模型的正确方法
【发布时间】:2011-02-12 03:54:03
【问题描述】:

我正在使用 NHibernate 和存储库模式编写一个 ASP.NET MVC 2 应用程序。我有一个包含我的模型(业务实体)的程序集,此外,在我的 Web 项目中,我想使用扁平对象(可能带有其他属性/逻辑)作为 ViewModel。 这些 VM 包含特定于 UI 的元数据(例如 Html.LabelFor() 方法使用的 DisplayAttribute)。

问题是我不知道如何实现验证,因此我不会在各个层级重复自己(特别是验证规则在 Model 中编写一次并传播到 ViewModel)。

我在我的 ViewModel 上使用 DataAnnotations,但这意味着没有对模型本身施加任何验证规则。我正在考虑的一种方法是从添加新属性/覆盖旧属性的业务实体派生 ViewModel 对象,从而在两者之间保留验证元数据,但这是一个丑陋的解决方法。

我见过有助于映射属性的 Automapper 项目,但我不确定它是否可以正确处理 ASP.NET MVC 2 验证元数据。在 asp.net mvc 2 中使用自定义验证框架难吗?

您是否有任何有助于在验证方面保持 DRY 的模式?

【问题讨论】:

    标签: asp.net-mvc metadata viewmodel


    【解决方案1】:

    可以重复验证。诀窍是把它放置在合适的地方。

    在您的情况下 - 在 UI 中,验证 UI 逻辑(视图模型道具不能为空,格式正确等),在业务层 - 验证业务逻辑(帐户有钱等)。

    不要以 DRY 作为违反 SRP 的借口! :P

    视图模型应该将您的业务层与表示角色分离。
    不要再把所有东西粘在一起。


    我猜 Automapper 无法处理这个问题。 :)

    【讨论】:

      猜你喜欢
      • 2018-03-04
      • 1970-01-01
      • 1970-01-01
      • 2012-03-04
      • 2012-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-07
      相关资源
      最近更新 更多