public ActionResult Details(int id) { try { var prodLN = new ProductoLN(); var producto = prodLN.Select(new Product { ProductID = id }); return View(producto); } catch (Exception ex) { ViewBag.ErrorDescription = ex.ToString(); ViewData["Controller"] = ControllerContext.RouteData.Values["Controller"].ToString(); ViewData["Action"] = ControllerContext.RouteData.Values["Action"].ToString(); return View("Error"); } }
//UpdateModel. //En este caso se está restringiendo a que solo se tomen los datos del form data. //[HttpPost] //public ActionResult Create(FormCollection formData) //{ // try // { // //Explicit Binding usando UpdateModel // var producto = new Product(); // // //Tiene el mismo efecto que hacer: UpdateModel(producto, new FormValueProvider(ControllerContext)) // UpdateModel(producto, formData); // // var prodLN = new ProductoLN(); // producto.RowGuid = Guid.NewGuid(); // producto.ModifiedDate = DateTime.Now; // prodLN.Insert(producto); // return RedirectToAction("Index"); // } // catch (Exception ex) // { // ViewBag.ErrorDescription = ex.ToString(); // ViewData["Controller"] = ControllerContext.RouteData.Values["Controller"].ToString(); // ViewData["Action"] = ControllerContext.RouteData.Values["Action"].ToString(); // return View("Error"); // } //} //TryUpdateModel. //Los usuarios pueden proporcionar valores que no pueden ser enlazados a la correspondiente propiedad del modelo, //tal como fechas inválidas o valores de texto para campos numéricos. //Cuando invocamos al model binding explícitamente, tenemos la responsabilidad de hacer frente a tales errores. //El model binging expresa errores de enlace lanzando la excepción InvalidOperationException. //Como un enfoque alternativo, podemos utilizar el método TryUpdateModel, que devuelve true si el proceso de enlace tiene éxito //y false si hay errores. La única razón para favorecer el uso de TryUpdateModel sobre UpdateModel, //es por la simplicidad del tratamiento de excepciones, pero no hay ninguna diferencia funcional en el proceso. //[HttpPost] //public ActionResult Create(FormCollection formData) //{ // try // { // //Explicit Binding usando TryUpdateModel // var producto = new Product(); // if (TryUpdateModel(producto, formData)) // { // var prodLN = new ProductoLN(); // producto.RowGuid = Guid.NewGuid(); // producto.ModifiedDate = DateTime.Now; // prodLN.Insert(producto); // return RedirectToAction("Index"); // } // else // { // //Comentar el ValidationMessageFor en la vista Create para el campo ProductNumber, // //con la finalidad de que la vista no valide el campo y podamos forzar un error. // string error = "ERROR EN EL MODEL BINDING!!!"; // foreach (var modelErrors in ModelState) // if (modelErrors.Value.Errors.Count > 0) // error += " - " + modelErrors.Value.Errors[0].ErrorMessage; // ViewBag.ErrorDescription = error; // return View("Error"); // } // } // catch (Exception ex) // { // ViewBag.ErrorDescription = ex.ToString(); // ViewData["Controller"] = ControllerContext.RouteData.Values["Controller"].ToString(); // ViewData["Action"] = ControllerContext.RouteData.Values["Action"].ToString(); // return View("Error"); // } //} public ActionResult Edit(int id) { try { var prodLN = new ProductoLN(); ViewBag.ProductModels = prodLN.GetProductModels(); ViewBag.ProductSubcategories = prodLN.GetProductSubsctegories(); ViewBag.UnitMeasures = prodLN.GetUnitMeasures(); var producto = prodLN.Select(new Product { ProductID = id }); return View(producto); } catch (Exception ex) { ViewBag.ErrorDescription = ex.ToString(); ViewData["Controller"] = ControllerContext.RouteData.Values["Controller"].ToString(); ViewData["Action"] = ControllerContext.RouteData.Values["Action"].ToString(); return View("Error"); } }