在具有Entity Framework 6的MVC5 ASP.NET应用程序中,我有以下Create方法:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "folio,fecha,almacen,cliente,plaza,usuario,id_factura")] facturas_prueba facturas_prueba)
{
if (ModelState.IsValid)
{
db.facturas_prueba.Add(facturas_prueba);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.almacen = new SelectList(db.CATALMA, "COD_ALM", "NOM_ALM", facturas_prueba.almacen);
ViewBag.cliente = new SelectList(db.CATCTES, "COD_CTE", "NOM_CTE", facturas_prueba.cliente);
ViewBag.usuario = new SelectList(db.FACPARU, "cod_usu", "cod_Alm", facturas_prueba.usuario);
ViewBag.plaza = new SelectList(db.PLAZAS, "PLAZA", "LAST_COD_CTE", facturas_prueba.plaza);
return View(facturas_prueba);
}
正如您所看到的,默认情况下使用[Bind(Include =
。据我所知,我可以使用仅包含我想要的请求参数。所以,我只想要folio,fecha,almacen和cliente。其他字段我想手动设置它们(目前,硬编码值)并删除视图中与它们相关的任何字段(因为我们没有用户放置这些值)。
MVC的方式如何......?
答案 0 :(得分:1)
MVC的方式如何......?
为视图和持久层使用不同的模型类型。您的“ViewModel”类将仅包含在视图中公开的类型/属性(或隐藏但视图正常运行所需的类型)。
提交数据以进行添加/更新时,将从源检索现有字段,与提交的数据合并,然后保留回来。