我是新来MVC5,只是想掌握使用的ViewModels的。我的问题是如果我必须在我的ViewModel的控制器中实例化我的模型类。我正在制作一个数据库来组织账单,并且有一个映射到数据库表的Cash模型和一个用于查看/编辑数据的CashViewModel。我是否需要在MVC5的ViewModel中实例化Model类?
这里是我的模型:
public class Cash
{
public int CashId { get; set; }
public decimal CashAmount { get; set; }
public int CashTypeId { get; set; }
public DateTime DateModified { get; set; }
public CashType CashType { get; set; }
}
这里是我的ViewModel:
public class CashViewModel
{
public int CashId { get; set; }
public decimal CashAmount { get; set; }
public int CashTypeId { get; set; }
public SelectList CashTypeSelectList { get; set; }
}
这里是我的控制器:
public ActionResult Create([Bind(Include = "CashAmount,CashTypeId")] CashViewModel cashVM)
{
if (ModelState.IsValid)
{
var cash = db.Cashes.Create();
cash.DateModified = DateTime.Now;
cash.CashAmount = cashVM.CashAmount;
cash.CashTypeId = cashVM.CashTypeId;
db.Cashes.Add(cash);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.CashTypeId = new SelectList(db.CashTypes, "CashTypeId", "CashTypeName", cashVM.CashTypeId);
return View(cashVM);
}
我创建了现款车型的一个实例并将我的ViewModel类映射到我的模型类。它是否正确?当我开始在一个ViewModel中有多个具有多个属性的模型的项目时,这看起来很快就会失控。
所有的问题,我看文章是不是太模糊或过于详细,如果有一些已经在那里我找不到任何我的具体问题,不好意思。
你的行为是否正确。请参阅[什么是MVC中的ViewModel?](http://stackoverflow.com/questions/11064316/what-is-viewmodel-in-mvc)。然而,删除你的'ViewBag.CashTypeId = new SelectList(....)'并用'cashVM.CashType = new SelectList(db.CashTypes,“CashTypeId”,“CashTypeName”);'(注意不是第4个参数) - 在视图中应该是'@ Html.DropDownListFor(m => m.CashTypeId,Model.CashType,...)' –