2010-06-09 27 views
5

Tengo un modelo/vista simple con cosas como nombre de usuario, contraseña, etc. y uso ayuda bastante para conectarlo.ASP.NET MVC 2 - ¿Cómo uso DropDownListFor?

Ahora tengo un campo llamado "NumberOfChildren". Quiero almacenar un número en él (int) y quiero que muestre un cuadro desplegable que contenga "Ninguno", "1", "2", etc.

Mi opinión es que el modelo tendría una lista o un método que devuelve una lista, por lo que puedo especificar los valores como NumberOfChildren_List en los que coloco los datos, y luego DropDownListFor extrae esa lista y la representa, haciendo coincidir el valor con el valor del artículo en el menú desplegable.

Sin embargo, después de pasar unos 30 minutos tratando de descubrir cómo funciona, me di por vencido y decidí preguntar aquí. ¿Algunas ideas?

Editar: Aquí hay algo de código ...

<%: Html.DropDownListFor(m => m.NumberOfChildren, new SelectList(Model.NumberOfChildrenListValues))%> 

y en el modelo

 [Required] 
     [DisplayName("How many children do you have?")] 
     public string NumberOfChildren { get; set; } 

     public IEnumerable<string> NumberOfChildrenListValues 
     { 
      get 
      { 
       List<string> list = new List<string>() { "None", "1", "2" }; 

       return list; 
      } 

      set 
      { 

      } 

     } 

consigo un objeto no establecida como instancia de Error de objeto de embargo. Ideas?

+0

Tenga una mirada en http://stackoverflow.com/questions/2306527/asp-net-mvc-2-html-dropdownlistfor-confusion-with- viewmodel (poss. dupe) – Lazarus

+1

Sí, lo vi primero, pero es confuso ya que el tipo ya tiene algunas cosas, y la respuesta aceptada es extraña. – NibblyPig

Respuesta

2

Trate como esta (que necesita para establecer el texto y el valor de cada opción - el texto se utilizará para la representación en la lista desplegable y el valor se utiliza para enlazar con el elemento seleccionado a la propiedad NumberOfChildren):

[Required] 
[DisplayName("How many children do you have?")] 
public string NumberOfChildren { get; set; } 

public IEnumerable<SelectListItem> NumberOfChildrenListValues 
{ 
    get 
    { 
     return new[] 
     { 
      new SelectListItem { Value = "0", Text = "None" }, 
      new SelectListItem { Value = "1", Text = "1" }, 
      new SelectListItem { Value = "2", Text = "2" }, 
     }; 
    } 
} 

y luego:

<%: Html.DropDownListFor(
    m => m.NumberOfChildren, 
    Model.NumberOfChildrenListValues 
) %>