如何从Controller </t>请求List <t>数据或任何其他数据

时间:2011-06-01 16:41:51

标签: asp.net-mvc-3 drop-down-menu controller actionmethod

我需要渲染一个DropDown列表,我不想将列表的值作为模型的一部分传递给View。

基本上我正在尝试做的事情看起来像那样:

@{
     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 个答案:

答案 0 :(得分:1)

将其放入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是“东西”的动态类型持有者,你几乎可以在那里粘贴任何东西。 :)这意味着将事物传递给不属于模型的视图。