有一个类(Model)User.cs:
namespace BookStore
{
using System;
using System.Collections.Generic;
public class User
{
public int user_id { get; set; }
public string user_login_name { get; set; }
public string user_first_name { get; set; }
public string user_last_name { get; set; }
}
}
我想创建一个ViewModel,然后在Views中使用它。我该怎么办?我在项目中创建ViewModels文件夹,在其中创建一个UserViewModel.cs类,然后呢?我只是复制并粘贴原始的User.cs内容并加入限制?像这样:
namespace BookStore.Models
{
public class UserViewModel
{
[Editable(false)]
public int user_id { get; private set; }
public string user_login_name { get; set; }
public string user_first_name { get; set; }
public string user_last_name { get; set; }
}
}
我这样做了,现在我的UserController说它不能隐式地将类型BookStore.User转换为BookStore.UserViewModel:
public class UserController : Controller
{
private DBEntities db = new DBEntities();
public ActionResult UserDetails()
{
UserViewModel user = db.Users.FirstOrDefault(u => u.user_login_name==User.Identity.Name);
if (user == null)
return RedirectToAction("Create");
else
return View(user);
}
我知道在MVC中分离关注点,域模型和视图模型应该用于不同的目的很重要,但为什么没有关于如何正确创建ViewModel的任何详细信息?我阅读了很多例子,但由于缺乏细节和解释这些内容的含义或内容是什么,或者如果我这样或那样做了什么,我们都不了解它们。
修改
令人难以置信......看起来没有官方和准备实现MVC的主要原则之一......你必须通过字段手动逐步将模型映射到彼此以构建应用程序符合关注点分离的原则。我预计它会像创建一个ViewModel类一样容易,并以某种方式将它链接到数据模型类。