@ Html.Action for Razor - PullRequest
       2

@ Html.Action for Razor

1 голос
/ 22 октября 2011

Я пытаюсь создать частичное представление для моего выпадающего списка в моем приложении asp.net mvc 3. у меня на странице есть:

@Html.Action("PopulateCombo","ComboController")

частичное представление контроллера:

public ActionResult PopulateCombo()
{
    //some code here to organise data and maybe some caching
    return ItemsForCombo;
}

Есть ли лучший способ шаблонирования выпадающего списка?

Ответы [ 2 ]

0 голосов
/ 22 октября 2011

Каковы ваши требования?Частичное представление может представлять собой элемент управления, который вы можете повторно использовать во всем приложении.Я не думаю, что выпадающий список является хорошим кандидатом для частичного просмотра.

Если бы я был вами, и я хотел бы отобразить раскрывающийся список, я бы использовал существующий помощник 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-помощника.

@Html.DropDownListFor(m => m.CountryId, (SelectList) ViewBag.Countries);

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

0 голосов
/ 22 октября 2011

Я бы заполнил данные в контроллере, затем передал их в модель и, наконец, использовал 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...