【发布时间】: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