【发布时间】:2011-04-05 15:55:10
【问题描述】:
注意:问题与映射元数据有关,而不是映射值。即目标映射属性的名称是什么,而不是映射值。
背景: 我正在使用带有自动映射器的 MVC 2 在域实体和视图模型之间进行映射。我在域模型中定义了一些域级别的验证规则,以及使用数据注释在视图模型中定义的更多特定于 ui 的验证规则。为了保持 DRY,我不想在视图模型中重复我的域验证规则。相反,我希望能够使用我已经在 AutoMapper 中设置的映射信息将域模型中的属性名称映射到视图模型中的相应属性名称。然后使用 ModelState.AddModelError() 将域验证错误添加到 ModelState 中,以显示在视图上。
验证消息中的属性名称需要匹配,以便 MVC 可以在表单上正确控件旁边显示消息。
【问题讨论】:
-
如果你有 source.Foo 你的目标通常是 target.Foo
-
您是在尝试使用自动映射器将属性从域对象复制到视图模型,还是我想念的东西?
-
@Omu:通常是的,但并非总是如此,因此问题
-
@VdesmedT:我正在将属性从视图模型复制到域模型(那里没有问题)。然后我验证域模型并收到一个或多个验证错误以及导致错误的属性名称。我希望能够将这些属性名称映射回它们的等效视图模型属性名称,这样我就可以让 MVC 在正确的控件旁边显示验证错误