2010-06-09 15 views
14

Próbuję wypełnić DropDownList wartościami wyciągniętymi z właściwości, a moim końcowym wynikiem jest lista "System.Web.Mvc.SelectListItem". Jestem pewna, że ​​pominąłem jakiś drobny krok, ale nie wiem, co to jest dla mojego życia.Dlaczego jest to renderowane jako lista "System.Web.Mvc.SelectListItem"?

Obiekt GET generowania listy:

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(); 
    } 
} 

Kod kontroler:

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

    return View(g); 
} 

Kod widok:

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

Odpowiedz

-5

EDIT: To pytanie jest bardzo podobny do jednego, że został już zadany:

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


W przeciwnym razie, można znaleźć w tym artykule pomocne:

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

Wykorzystuje EditorFor, ale to samo można zrobić dla Displayfor.

+0

Spojrzę na te, dzięki. –

+4

nie jest to bardzo pomocne. to pytanie wymaga szczególnego powodu, dla którego znaczniki

+2

Tak, żadne z tych innych pytań lub artykułów nie jest "bardzo podobne" do tego. W rzeczywistości wcale. –

32

Problem polega na tym, że nie należy wypełniać SelectList za pomocą IEnumerable<SelectListItem>. Użyj albo SelectList lub IEnumerable<SelectListItem>, ale nie obu. Aby uzyskać więcej informacji, proszę spojrzeć na to pytanie: Asp.Net MVC 2 Dropdown Displaying System.Web.MVC.SelectListItem

+1

Krótkie i na temat. Dobra odpowiedź. – Casey

+0

Krótka i dobra odpowiedź. Dziękuję :) –

+0

Ten dostaje mnie za każdym razem! Doskonała odpowiedź, dzięki. – VictorySaber

2

Wpadłem na ten sam problem. Należy uczynić w widoku jak

@ Html.DropDownListFor (model => model.fooid, new SelectList (ViewData [ "fooList"], "tekst", "Value", Model.DefaultValue))

To na podstawie C# z widokiem brzytwy

Powiązane problemy