2011-05-03 16 views
5

Soy un novato en Asp.net MVC, así que por favor desnúdate conmigo.¿Cuáles son las diferentes maneras de enviar datos de formulario a la acción del controlador en ASP.net MVC 3?

Quiero publicar un formulario de datos que tiene un tipo de cuadrícula de diseño y una columna en cada fila contiene lista desplegable. el valor seleccionado en la lista desplegable se asigna al ID del elemento de esa fila.

Quiero saber, ¿cuáles son las diferentes formas de publicar estos datos en la acción del controlador en este caso?

Pasar como parámetros individuales ya se ha ignorado ya que mi formulario tendrá datos dinámicos y puede tener n cantidad de registros. ¿Estoy en lo correcto en este pensamiento?

Thought of FormCollection, ¿es esta la elección correcta?

Respuesta

5

Como siempre me gustaría empezar por la definición de un modelo de vista:

public class MyViewModel 
{ 
    public string SelectedValue { get; set; } 
    public IEnumerable<SelectListItem> Values { get; set; } 
} 

a continuación tienen una acción de controlador GET que rellenar una colección de este modelo de vista y en la vista correspondiente Me gustaría utilizar las plantillas del editor:

@model IEnumerable<MyViewModel> 
@using (Html.BeginForm()) 
{ 
    <table> 
     <thead> 
      <tr> 
       <th>Some column name</th> 
      </tr> 
     </thead> 
     <tbody> 
      @Html.EditorForModel() 
     </tbody> 
    </table> 

    <input type="submit value="OK" /> 
} 

y en la plantilla correspondiente editor (~/Views/Shared/EditorTemplates/MyViewModel.cshtml):

@model MyViewModel 
<tr> 
    <td> 
     @Html.DropDownListFor(
      x => x.SelectedValue, 
      new SelectList(Model.Values, "Value", "Text") 
     ) 
    </td> 
</tr> 

y finalmente esta a publicar los valores seleccionados:

[HttpPost] 
public ActionResult Index(IEnumerable<MyViewModel> model) 
{ 
    ...  
} 
+0

@Darin: Una pequeña duda, no es redundante pasando 'IEnumerable <> Valores SelectListItem' para cada fila? ¿No podemos enviar esta lista una vez para toda la vista ya que es la misma para todas las filas? – JPReddy

+0

@JPReddy, sí, por supuesto si se debe mostrar el mismo menú desplegable en cada fila. Tal vez malinterpreté la pregunta y asumí que debería usarse un menú desplegable diferente en cada fila. –

+0

@Darin: Incluso supongo que se usa la misma lista desplegable en todas las filas, en este caso, ¿cómo debemos diseñar el modelo para que contenga una sola lista para todas las filas? ¿alguna idea? – JPReddy

Cuestiones relacionadas