Как запросить данные List <T>или любые другие данные из контроллера - PullRequest
0 голосов
/ 01 июня 2011

Мне нужно отобразить список DropDown, и я не хочу передавать значения списка в представление как часть модели.

В основном то, что я пытаюсь сделать, выглядит так:

@{
     var roles = Html.Action("GetRoles");
     var selectList = from r in roles select new SelectListItem
                     {
                         Selected = (r.Id == Model.DefaultRole.Id),
                         Text = r.RoleName,
                         Value = r.Id.ToString(),
                     };
  }
  @Html.DropDownList("roles", selectList)
  @Html.ValidationMessageFor(m => m.DefaultRole)

И метод действия

  public List<aspnet_Role> GetRoles()
  {
        return _dataContext.GetAspnetRoles();
  }

Конечно, это не сработает. Как мне это сделать?

1 Ответ

1 голос
/ 01 июня 2011

Поместите это в ViewBag.В вашем контроллере вы можете сделать это:

ViewBag.selectList = from r in roles select new SelectListItem
                 {
                     Selected = (r.Id == Model.DefaultRole.Id),
                     Text = r.RoleName,
                     Value = r.Id.ToString(),
                 };

Затем в вашем представлении просто измените свой DropDownList на это:

@Html.DropDownList("roles", ViewBag.selectList)

ViewBag - это динамически типизированный держатель "вещи", вы можетезасунуть туда почти все:) Он предназначен для передачи в представление вещей, которые не являются частью модели.

...