2010-05-13 16 views
7
public ActionResult Edit(int id, FormCollection formValues) { 

    // Retrieve existing dinner 
    Dinner dinner = dinnerRepository.GetDinner(id); 

    // Update dinner with form posted values 
    dinner.Title = Request.Form["Title"]; 
    dinner.Description = Request.Form["Description"]; 
    dinner.EventDate = DateTime.Parse(Request.Form["EventDate"]); 
    dinner.Address = Request.Form["Address"]; 
    dinner.Country = Request.Form["Country"]; 
    dinner.ContactPhone = Request.Form["ContactPhone"]; 

    // Persist changes back to database 
    dinnerRepository.Save(); 

    // Perform HTTP redirect to details page for the saved Dinner 
    return RedirectToAction("Details", new { id = dinner.DinnerID }); 
} 

formValues no se utiliza en el método. ¿Cual es su propósito?asp.net mvc formcollection

+0

Considere el uso de ViewModels http://www.jacopretorius.net/2010/01/use-view-models-instead-of-formcollection.html – Custodio

Respuesta

1

Sólo para hacer algunos comentarios,

  1. dinner.EventDate = DateTime.Parse(Request.Form["EventDate"]); es qué modelo se supone unión a deshacerse de él. Usando una vista fuertemente tipada, debe volver a poner un tipo de fecha y hora en dinner.EventDate, sin tener que hacer eso asignando usted mismo.

  2. El FormCollection devuelve todas las entradas que fueron presentadas a través del formulario HTML y que son capaces de recuperar aquellos elementos utilizando la siguiente sintaxis formCollection["Title"] dado que el nombre del elemento de entrada es "Título"

¡Las vistas fuertemente tipadas son simplemente increíbles!

25

Uno de los mayores avances de MVC es deshacerse de este código de asignación de aburrido izquierda-derecha. Tiene mecanismos establecidos que pueden hacer este trabajo por usted. En este caso, podría hacer algo como esto:

Dinner dinner = dinnerRepository.GetDinner(id); 
UpdateModel(dinner, formValues); // Automatically updates properties with values from the collection 
dinnerRepository.Save(); 

Espero que esto ayude.

+0

puedo crear o [Agregar] (https://msdn.microsoft. com/en-us/library/system.web.mvc.formcollection.add (v = vs.118) .aspx) valores a 'formcollection' del modelo [propiedades] (http://stackoverflow.com/questions/737151/ how-to-get-the-list-of-properties-of-a-class) en el par de valores clave? – stom

Cuestiones relacionadas