2010-03-07 17 views
8

Ich bin neu in ASP.NET MVC. Ich versuche herauszufinden, wie ich aus den Werten in meiner Datenbank eine einfache Dropdown-Liste erstellen kann. In ASP.NET Web-Formulare, ich weiß, ich eine Dropdown-Liste wie folgt laden:ASP.NET MVC - Füllen Sie eine Dropdown-Liste

Page.aspx

<asp:DropDownList ID="myDropDownList" runat="server" DataTextField="FullName" DataValueField="ID" OnLoad="myDropDownList_Load" /> 

Page.aspx.cs

void myDropDownList_Load(object sender, EventArgs e) 
{ 
    if (Page.IsPostBack == false) 
    { 
    List<Person> people = GetPeopleFromDatabase(); 
    myDropDownList.DataSource = people; 
    myDropDownList.DataBind(); 
    } 
} 

Wie mache ich die gleiche Art von Sache in ASP.NET MVC? Vielen Dank!

+0

Werfen Sie einen Blick auf diesen Blog-Post, die erklärt, alles: [Dropdown-Listen und ASP.NET MVC] (http://odetocode.com/Blogs/scott/archive/2010/01/18/drop-down-lists-and-asp-net-mvc.aspx) –

+0

Als @LenielMacaferi saugt SelectList ist Ihr Freund erstellen ein Modell in Ihrer Ansicht. – kenny

Antwort

2

In MVC2 verwenden Sie <%=Html.DropListFor(x => x.MemberName, Model.DropListItems)%> in Ihrer Ansicht und in Ihrem Controller füllen Sie DropListItems mit einem neuen SelectList, der die Elemente aus der Datenbank enthält.

Ich glaube, dass die Nerd Dinner-Probe dies enthält, und wenn Sie neu bei MVC sind, sollten Sie wirklich die Nerd Dinner App durchgehen und erstellen, weil Sie so viel daraus lernen, auch wenn Sie nicht planen benutze, was sie benutzen.

8

Modell

public class EditSongViewModel 
{   
    public int AlbumId { get; set; } 
    public string Title { get; set; }     
    public int TrackNumber { get; set; } 
    public IEnumerable<SelectListItem> Albums { get; set; } 
} 

Erweiterungsmethode

public static IEnumerable<SelectListItem> ToSelectListItems(
       this IEnumerable<Album> albums, int selectedId) 
{ 
    return 
     albums.OrderBy(album => album.Name) 
       .Select(album => 
        new SelectListItem 
        { 
        Selected = (album.ID == selectedId), 
        Text = album.Name, 
        Value = album.ID.ToString() 
        }); 
} 

Erste Daten aus der Datenbank

model.Albums = _repository.FindAllAlbums().ToSelectItems(selectedId); 

Ansicht

@Html.DropDownList("AlbumId", Model.Albums) 

oder besser noch:

@Html.DropDownListFor(model => model.AlbumId, Model.Albums) 

einen Blick auf diesen Blog-Post nehmen, die alles erklärt:

Drop-down Lists and ASP.NET MVC

+0

Woher kommt Modell.AlbumId in diesem Beispiel? Ich sehe 'AlbumId' nicht auf Ihrem Modell – dferraro

+0

@dferraro groß ... Sie haben einen Fehler gefunden! Habe gerade den Link unten in meiner Antwort AGAIN geöffnet und gesehen, dass der Autor 'AlbumId' zum' EditSongViewModel' hinzugefügt hat. Als ich vor 3 Jahren meine Antwort hinzufügte, war das Ding nicht im Modell und natürlich sollte es sein. : D –

+0

@Lenial Macaferi danke für die Klärung. Und was repräsentiert die 'AlbumId' hier? Stellt es immer die 'ausgewählte AlbumId' dar? – dferraro

Verwandte Themen