2010-06-09 18 views
14

Estoy intentando rellenar una DropDownList con valores extraídos de una propiedad, y mi resultado final en este momento es una lista de nada más que "System.Web.Mvc.SelectListItem" s. Estoy seguro de que hay un pequeño paso que estoy omitiendo aquí, pero por mi vida no puedo entender de qué se trata.¿Por qué esto se representa como una lista de "System.Web.Mvc.SelectListItem" s?

El GET propiedad de generación de la lista:

public IEnumerable<SelectListItem> AllFoo { 
    get { 
     var foo = from g in Bar 
        orderby g.name 
        select new SelectListItem { 
        Value = g.fooid.ToString(), 
        Text = g.name 
        }; 

     return foo.AsEnumerable(); 
    } 
} 

El código del controlador:

public ActionResult Edit(string id) { 
    // n/a code 
    ViewData["fooList"] = new SelectList(g.AllFoo, g.fooid); 

    return View(g); 
} 

El código de la vista:

<%= Html.DropDownListFor(model => model.fooid, ViewData["fooList"] as SelectList) %> 

Respuesta

-5

EDIT: Esta pregunta es muy similar a la que ya se le preguntó:

ASP.NET MVC 2 - Html.DropDownListFor confusion with ViewModel


De lo contrario, podría encontrar útil este artículo:

http://www.nickriggs.com/posts/rendering-and-binding-drop-down-lists-using-asp-net-mvc-2-editorfor/

Utiliza EditorFor, pero el mismo se puede hacer para DisplayFor.

+0

Echaré un vistazo a esos, gracias. –

+4

esto no es muy útil. esta pregunta requiere la razón específica por la cual las etiquetas

+2

Sí, ninguna de esas otras preguntas o artículos son "muy similares" a esta. De ninguna manera, de hecho. –

32

El problema aquí es que no deberías llenar un SelectList con un IEnumerable<SelectListItem>. Use SelectList o IEnumerable<SelectListItem>, pero no ambos. Para obtener más detalles, eche un vistazo a esta pregunta: Asp.Net MVC 2 Dropdown Displaying System.Web.MVC.SelectListItem

+1

Corto y al grano. Buena respuesta. – Casey

+0

Breve y buena respuesta. Gracias :) –

+0

¡Éste me entiende cada vez! Respuesta perfecta, gracias – VictorySaber

2

Me encontré con el mismo problema. Usted debe hacer en la vista como

@ Html.DropDownListFor (modelo => model.fooid, nuevo SelectList (ViewData [ "fooList"], "texto", "Valor", Model.DefaultValue))

Esto basado en C# con razor view

Cuestiones relacionadas