2010-12-21 20 views
6

En el libro de Scott Hanselman (capítulo 1), nos proporciona dos opciones para implementar [HttpPost] para el método de acción Crear.[HttpPost] public ActionResult Create (colección FormCollection) VERSUS [HttpPost] public ActionResult Create (Cena)

El primero se basa en TryUpdateModel para actualizar un objeto modelo en función de los campos de formulario entrantes. Cuando los campos de formulario entrantes contienen entradas no válidas, ModelState.IsValid se establecerá en falso.

 [HttpPost] 
     public ActionResult Create(FormCollection collection) 
     { 
      Dinner dinner = new Dinner(); 

      if (TryUpdateModel(dinner)) 
      { 
       dinnerRepository.Add(dinner); 

       dinnerRepository.Save(); 

       return RedirectToAction("Details", new { id = dinner.DinnerId }); 
      } 
      else 
       return View(dinner); 

     } 

El segundo método es utilizar un modelo aprobado como método de acción Crear arg de la siguiente manera:

 [HttpPost] 
     public ActionResult Create(Dinner dinner) 
     { 
      if (ModelState.IsValid) 
      { 
       dinnerRepository.Add(dinner); 

       dinnerRepository.Save(); 

       return RedirectToAction("Details", new { id = dinner.DinnerId }); 
      } 
      else 
       return View(dinner); 
     } 

cuál es más recomendable para su uso en la producción?

Respuesta

5

Si todos sus datos requeridos están en Request.Form, datos de ruta o en la cadena de consulta de URL, puede usar el enlace de modelo como en su segundo ejemplo.

El modelo de encuadernación crea su objeto de cena y lo rellena con los datos de la solicitud al hacer coincidir los nombres de las propiedades.

Puede personalizar el proceso de vinculación con "listas blancas", "listas negras", prefijos e interfaces de marcador. Solo asegúrese de no vincular involuntariamente los valores; consulte esto link.

+0

gracias por responder e informar el enlace. – xport