2011-11-16 27 views
5

Tengo una aplicación web C# .Net MVC3. Estoy usando listas desplegables por todas partes y teniendo éxito. Sin embargo, hay dos con los que estoy teniendo problemas. La única diferencia es que estoy creando el SelectLists sobre la marcha en el código en lugar de usar tablas de búsqueda. Yo uso tablas de búsqueda para todos los otros Drop Downs. Cuando QuickWatch el SelectLists en el código, el artículo correcto tiene el valor de propiedad Selected establecido en true. Sin embargo, cuando se carga la página, no se muestra el elemento con la propiedad Selected. El primer artículo es ¿Algunas ideas? Este es uno de esos werid. He intentado en ambos sentidos a continuación. En ambos casos, el ViewBag.DateToYear y la SelectList DateToYear tienen los valores correctos y propiedades 'seleccionados' establecenMVC3 Lista desplegable que no selecciona el elemento seleccionado

1)

// Controlador

 IList<string> dateToYear = new List<string>(); 
     for (int i = 0; i < numberYears; i++) 
     { 
      dateToYear.Add(DateTime.Now.AddYears(i).Year.ToString()); 
     } 
     ViewBag.DateToYear = new SelectList(dateToYear,"2014") 

// Ver

 @Html.DropDownList("DateFromYear", (SelectList)ViewBag.DateToYear) 

2) // Controlador MISMO que el anterior

// Ver

List<SelectListItem> DateToYear = new List<SelectListItem>(); 
foreach (var m in ViewBag.DateToYear) 
{ 
    DateToYear.Add(new SelectListItem { Selected = @m.Selected, Value = @m.Text, Text = @m.Text }); 
} 

@Html.DropDownList("DateFromYear", DateToYear) 
+2

¿podría publicar algún código? –

+0

@Thhomas ... ¿eso ayuda? – MikeTWebb

+0

¿Has probado una DropDownListFor? ¿Por qué no tiene las opciones de la lista de selección como parte de A) el ViewBag o B) un modelo de vista fuertemente tipado? No veo qué sacas de cómo te estás acercando a esto. –

Respuesta

5

No estoy seguro si este es el caso, pero tuve algunos problemas con dropdownboxes no ser elegida hace unos días.

Mi problema es: Tengo un @model.Options y he creado un @html.dropdownlist("Options", @model.Options, [...]). Sin embargo, debido a que tenían el mismo nombre, de alguna manera entraron en conflicto. Cuando usé @html.dropdownlist("anythingElse", @model.Options, [...]) funcionó bien.

Cuando observé QuickWatched return View(model), las opciones seleccionadas parecían también estar correctas, por lo que me tomó un tiempo darme cuenta. Tal vez tienes el mismo problema?

+0

@Ron ... ¡OSCILAN! Eso fue todo. Hombre, ese es un error clásico – MikeTWebb

+0

de nada. Me alegro de poder ayudar. Me tomó bastante tiempo darme cuenta también: P –

+0

Gracias a mí también me funciona ... –

6

El problema es que SelectList funciona como se diseñó. El error está en el diseño. Puede establecer la Propiedad seleccionada en SelctedItem, pero esto se ignorará por completo, si recorre la lista con GetEnumerator() (o si Mvc lo hace por usted). Mvc creará nuevos SelectfListItems en su lugar.

Debe usar el SelectList ctor con el SelectListItem [], el Text-Name, el Value-Name y el SelectedValue. ¡Tenga en cuenta que debe pasar como SelectedValue el VALOR de SelectListItem, que desea seleccionar, no el SelectListItem en sí mismo! Ejemplo:

¿Por qué no hacer en el controlador?

código Pseudo:

// controlador

ViewBag.DateToYear = new SelectList(new[] 
{ 
new SelectListItem { Text = "10", Value = "10" }, 
new SelectListItem { Text = "15", Value = "15" } 
new SelectListItem { Text = "25", Value = "25" }, 
new SelectListItem { Text = "50", Value = "50" }, 
new SelectListItem { Text = "100", Value = "100" }, 
new SelectListItem { Text = "1000", Value = "1000" }, 
}, "SomeText", "Value", "15"); 

La segunda opción debe ser seleccionado.

+0

Intenté acercarte, también, y funcionó ... gracias – MikeTWebb

0

Igual cosa me estaba sucediendo a mí también, asegúrese de no dar la misma ID que el nombre de propiedad que le dio a su modelo. Así es como resolví este problema ...

Cuestiones relacionadas