#c# #visual-studio-2010 #asp.net-mvc-3
#c# #visual-studio-2010 #asp.net-mvc-3
Вопрос:
Я пытаюсь создать partialview для моего выпадающего списка в моем asp.net приложение mvc 3. на моей странице у меня есть:
@Html.Action("PopulateCombo","ComboController")
частичный просмотр контроллера:
public ActionResult PopulateCombo()
{
//some code here to organise data and maybe some caching
return ItemsForCombo;
}
Есть ли лучший способ создания шаблона выпадающего списка?
Ответ №1:
Я бы заполнил данные в контроллере, затем передал их в модель и, наконец, использовал Html.DropDownListFor
. Я имею в виду, это то, что означает MVC 🙂
Пример
(PS: прошло довольно много времени с тех пор, как я больше не писал код на c #, поэтому приношу извинения за любые опечатки)
controller.cs
Public ActionResult ()
{
Model m = new Model();
//populate data into a list
m.Items = ...
return View(m);
}
model.cs
...
Public List<object> Items { get; set; }
index.cshtml
@using Model // I guess it was something like this
// I cant remember the exact order of the arguments to dropdownlistfor, so just figure it out :)
@Html.DropDownListFor (some arguments)
Ответ №2:
Каковы ваши требования? Частичное представление может представлять элемент управления, который вы можете повторно использовать в своем приложении. Я не думаю, что выпадающий список является хорошим кандидатом для частичного просмотра.
Если бы я был на вашем месте и хотел отобразить выпадающий список, я бы использовал существующий HTML-помощник.
В моем контроллере я бы сохранял значения для выпадающего списка в пакете просмотра:
IList<SelectListItem> selectListItems = new List<SelectListItem>();
// Populate selectListItems
...
// Create a select list. You'll have to replace dataValueField and dataTextField with property names
SelectList mySelectList = new SelectList(selectListItems, "dataValueField", "dataTextField");
// Assume that select list contains a list of countries
ViewBag.Countries = mySelectList;
Затем, по вашему мнению, вы можете создать выпадающий список с помощью HTML helper
@Html.DropDownListFor(m => m.CountryId, (SelectList) ViewBag.Countries);
Я написал это в блокноте, поэтому могут быть синтаксические ошибки.