@Html.Действие для Razor

#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);
  

Я написал это в блокноте, поэтому могут быть синтаксические ошибки.