Disculpa si se trata de un dup, mi búsqueda no arrojó nada.Elemento seleccionado en listas desplegables de Enum en ASP.net MVC
estoy usando el siguiente método para generar listas desplegables para tipos de enumeración (levantadas desde aquí: http://addinit.com/?q=node/54):
public static string DropDownList(this HtmlHelper helper, string name, Type type, object selected)
{
if (!type.IsEnum)
throw new ArgumentException("Type is not an enum.");
if(selected != null && selected.GetType() != type)
throw new ArgumentException("Selected object is not " + type.ToString());
var enums = new List<SelectListItem>();
foreach (int value in Enum.GetValues(type))
{
var item = new SelectListItem();
item.Value = value.ToString();
item.Text = Enum.GetName(type, value);
if(selected != null)
item.Selected = (int)selected == value;
enums.Add(item);
}
return System.Web.Mvc.Html.SelectExtensions.DropDownList(helper, name, enums, "--Select--");
}
Se está trabajando muy bien, excepto por una cosa. Si le doy a la lista desplegable el mismo nombre que la propiedad en mi modelo, el valor seleccionado no está configurado correctamente. Significando esto funciona:
<%= Html.DropDownList("fam", typeof(EnumFamily), Model.Family)%>
Pero esto no es así:
<%= Html.DropDownList("family", typeof(EnumFamily), Model.Family)%>
Debido a que estoy tratando de pasar todo el objeto directamente al método de controlador estoy publicando a, lo haría muy como tener la lista desplegable nombrada para la propiedad en el modelo. Cuando utilizo el nombre "correcto", el menú desplegable se publica correctamente, simplemente no puedo configurar el valor seleccionado.
No creo que esto es importante, pero estoy corriendo MVC 1 en Mono 2.6
edición: Acabo de probar esto en Windows, y yo estoy viendo el mismo comportamiento
Vi el mismo comportamiento, y funcioné al usar diferentes listas desplegables nombradas. – Nate