【发布时间】:2017-09-13 06:58:18
【问题描述】:
我正在为我的 ASP MVC Web 应用程序创建一些视图模型。 我为数据库创建了“代码优先”模型。从数据库模型派生视图模型是一种好方法吗?
示例数据库模型:
public class Project
{
[Key]
public int Id { get; set; }
public int? CustomerId { get; set; }
public int TypeId { get; set; }
public string Number { get; set; }
public string Name { get; set; }
}
查看模型:
public class ViewModelProject : Project
{
[NotMapped]
public DateTime? Start { get; set; }
[NotMapped]
public DateTime? End { get; set; }
[NotMapped]
public string Manager { get; set; }
}
这是正确的方法还是完全错误的?
编辑(子问题): 我有一些非常简单的数据库模型,比如 ProjectType,它只包含两个属性。我是否还应该在模型视图中分割这些模型,或者我可以这样做: 简单的数据库模型:
public class ProjectType
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public int? Code { get; set; }
}
我可以这样使用吗:
public class ProjectVM
{
public string Name { get; set; }
public int Number { get; set; }
public ProjectType Type { get; set; }
}
还是必须像这样分片:
public class ProjectVM
{
public string Name { get; set; }
public int Number { get; set; }
public string Type { get; set; }
public int TypeCode { get; set; }
}
【问题讨论】:
-
不,这不是正确的方式 - What is ViewModel in MVC?
-
我认为完全错误。视图模型应该与数据模型相关联——甚至不是所有的数据模型字段都包括在内(取决于您使用的视图页面)。
-
但有时像这样使用它似乎很简单。所以我每次都需要将每个模型“重写”为 Viewmodel?
-
使用视图模型的目的包括关注点分离、防止过度发布和发布不足攻击、添加不适合数据模型的视图特定属性等的能力 - 你所做的事情违背了目的.征求意见是题外话。
-
“子问题”与原始问题无关。您应该为此打开一个新的问答。
标签: c# asp.net asp.net-mvc asp.net-mvc-4