ASP.NET MVC - заполнение часто используемых выпадающих списков - PullRequest
10 голосов
/ 20 ноября 2010

Мне было интересно, что лучше всего использовать при заполнении часто используемых выпадающих списков в ASP.NET MVC. Например, у меня есть выбор страны и штата, который часто используется в моем приложении. Кажется грязным заполнять viewmodel и привязываться к этой viewmodel из моего контроллера для каждого представления, которое я хочу содержать в раскрывающемся списке.

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

Заранее спасибо,

JP

Ответы [ 3 ]

7 голосов
/ 20 ноября 2010

Вы можете иметь атрибут RequiresStateList для добавления этой общей функциональности к нужным действиям.

public class RequiresStateList : ActionFilterAttribute {
    public override void OnResultExecuting(ResultExecutingContext filterContext) 
    {
        filterContext.Controller.ViewData["StateList"] = GetStates();
    }
}

А твое действие

[RequiresStateList]
public ActionResult Index() {
    return View();
}

Теперь вы можете получить этот список из ViewData в вашем представлении.

3 голосов
/ 20 ноября 2010

Пользовательские HTML-помощники - путь ...

http://www.asp.net/mvc/tutorials/creating-custom-html-helpers-cs

0 голосов
/ 20 ноября 2010

Я большой поклонник создания моделей представлений, которые точно соответствуют (модели) каждому представлению. Поэтому, если у вас есть представление с раскрывающимся списком «Состояния», моя модель представления для этой страницы будет содержать коллекцию «Состояния» ListItems.

Я бы не стал беспокоиться о наличии моделей с коллекцией состояний. Вместо этого я бы централизовал логику для получения состояний, что-то вроде:

viewModel.States = StatesHelper.GetStates(); // returns IList<ListItem>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...