Я плохо знаком с ASP.NET MVC. Я пытаюсь выяснить, как создают основной выпадающий список из значений в моей базе данных. В веб-формах ASP.NET я знаю, что могу загрузить выпадающий список как это:
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();
}
}
Как я делаю тот же тип вещи в ASP.NET MVC?Спасибо!
Модель
public class EditSongViewModel
{
public int AlbumId { get; set; }
public string Title { get; set; }
public int TrackNumber { get; set; }
public IEnumerable<SelectListItem> Albums { get; set; }
}
Метод расширения
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()
});
}
Получение данных из базы данных
model.Albums = _repository.FindAllAlbums().ToSelectItems(selectedId);
Просмотр
@Html.DropDownList("AlbumId", Model.Albums)
или еще лучше:
@Html.DropDownListFor(model => model.AlbumId, Model.Albums)
Взгляните на это сообщение в блоге, которое все объясняет:
В MVC2 используйте <% = Html.DropListFor (x => x.MemberName, Model.DropListItems)%>
в вашем view и в вашем контроллере вы заполняете DropListItems новым SelectList
, содержащим элементы из базы данных.
Я считаю, что образец Nerd Dinner включает это, и если вы новичок в MVC, вам действительно стоит пройти и создать приложение Nerd Dinner, потому что вы многому научитесь из него, даже если вы не планируете использовать что они используют.