在模型绑定中设置排除值的值

时间:2015-10-15 16:51:04

标签: c# asp.net asp.net-mvc

在具有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的方式如何......?

1 个答案:

答案 0 :(得分:1)

  

MVC的方式如何......?

为视图和持久层使用不同的模型类型。您的“ViewModel”类将仅包含在视图中公开的类型/属性(或隐藏但视图正常运行所需的类型)。

提交数据以进行添加/更新时,将从源检索现有字段,与提交的数据合并,然后保留回来。