2010-06-09 8 views
14

Ich versuche, eine DropDownList mit Werten aus einer Eigenschaft zu füllen, und mein Endergebnis ist jetzt eine Liste von nichts als "System.Web.Mvc.SelectListItem" s. Ich bin mir sicher, dass es einen kleinen Schritt gibt, den ich hier auslasse, aber für das Leben von mir kann ich nicht herausfinden, was es ist.Warum wird das als eine Liste von "System.Web.Mvc.SelectListItem" s gerendert?

Die Eigenschaft GET die Liste zu erzeugen:

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

Der Controller-Code:

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

    return View(g); 
} 

Der Blick Code:

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

Antwort

-5

EDIT: Diese Frage zu einem sehr ähnlich ist, wurde bereits gefragt:

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


Andernfalls könnten Sie diesen Artikel hilfreich:

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

Es verwendet EditorFor, aber das gleiche gilt für DisplayFor erfolgen.

+0

Ich werde einen Blick auf diejenigen, danke. –

+4

das ist nicht sehr hilfreich. Diese Frage fragt nach dem bestimmten Grund, warum die

+2

Ja, keine dieser anderen Fragen oder Artikel sind "sehr ähnlich" zu diesem. Überhaupt nicht. –

32

Das Problem hier ist, dass Sie eine SelectList mit einer IEnumerable<SelectListItem> nicht füllen sollten. Verwenden Sie entweder SelectList oder IEnumerable<SelectListItem>, aber nicht beides. Für weitere Details, werfen Sie einen Blick auf diese Frage: Asp.Net MVC 2 Dropdown Displaying System.Web.MVC.SelectListItem

+1

Kurz und auf den Punkt. Gute Antwort. – Casey

+0

Kurze und gute Antwort. Danke :) –

+0

Dieser bekommt mich jedes einzelne Mal! Perfekte Antwort, danke. – VictorySaber

2

Ich lief auf das gleiche Problem. Sie sollten wie

in der Ansicht machen

@ Html.DropDownListFor (Modell => model.fooid, neue Select (Viewdata [ "FooList"], "Text", "Value", Model.DefaultValue))

Dies basiert auf C# mit Rasierklingensicht

Verwandte Themen