【发布时间】:2016-10-12 10:03:09
【问题描述】:
我对数据库优先模型以及如何使用 MVC 视图模型处理这些模型的经验很少。
很明显,我无法更改原始模型,但我想为模型添加一些注释以进行验证。
因此,我尝试创建一个继承自实体的 ViewModel
My DB First 生成的模型 - 请勿修改
public partial class xmldata
{
public string ISBN { get; set; }
public string title { get; set; }
public string blurb { get; set; }
...
}
然后我创建了一个继承自 xmldata 的视图模型,如下所示
public class XmlDataViewModel : xmldata
{
[AllowHtml]
[Display(Name = "Blurb")]
public string BlurbVm {
get { return blurb; }
set { blurb = value; }
}
...
}
上面显示的字段我需要 AllowHtml 和我迄今为止最好的解决方案,但是在控制器操作中,我仍然必须手动将 BlurbVm 字段映射回 Blurb,即使我认为上面的设置器会处理这个(我在其余字段中使用 Automapper)所以我很困惑为什么这不起作用。
目前我正在控制器中进行验证,并且可能希望稍后对其进行重构以将它们移动到视图模型中,以便我可以使用 [Required] 注释以及 [Display (Name="Title")] 字段当前在视图中处理。
我的整体问题可能是在使用数据库优先模型时,我是否使用了处理模型注释和查看模型的最佳策略。
【问题讨论】:
-
视图模型不继承数据模型。它是一个完全独立的模型,根本不了解数据模型。 What is ViewModel in MVC?
-
是的,您可能犯的最大错误之一是将数据模型重用为视图模型。你进入了一个痛苦的世界!
标签: asp.net-mvc asp.net-mvc-4 ef-database-first