.Net MVC实体和视图模型..相同或分离
本文关键字:分离 模型 视图 MVC 实体 Net | 更新日期: 2023-09-27 18:25:28
我是asp.net MVC的新手,我使用实体框架代码优先的方法创建了一个项目。我已经将我的POCO对象放入一个名为Entities的单独类库中。
现在我想从我的服务类中获取一些数据,它返回一个实体并将其输出到视图。这是一些非常基本的代码
// in POCO library
public class MyEntity() {
public int Id { get; set; }
public String Name { get; set; }
}
// in service library
public class EntityService() {
public MyEntity Get(int id) {
return new MyEntity() { Id=1, Name="This is my entity name" };
}
}
// controller in asp.net MVC web application
public MyController() : Controller
{
private EntityService _service;
public MyController(EntityService service) {
_service = service;
}
public ActionResult Index()
{
MyEntity entity = _service.Get(1);
return View(entity);
}
}
现在,我应该将MyEntity推送到视图中,还是应该创建一个单独的ViewModel?我有一部分认为,创建一个单独的ViewModel最好能保持实体和我的视图之间的分离,而且复制我需要的字段的"逻辑"也会在控制器中。但我的另一部分认为,创建ViewModel只是实体的一个近似副本,所以看起来像是在浪费时间?
我想正确地做,所以我想我会在这里问。提前感谢
Viewmodel是最佳解决方案。
- 您可以放置属性(验证和其他)
- 视图模型可以包含来自多个数据实体的数据
- 正如您所说,实体和视图之间存在分离
一般方法是在控制器中获取实体并使用一些映射器库(我建议使用emit映射器)将实体映射到视图模型