如何请求列表来自控制器的数据或任何其他数据

发布于 2024-11-11 06:48:29 字数 673 浏览 4 评论 0原文

我需要渲染一个下拉列表,但我不想将列表的值作为模型的一部分传递给视图。

基本上我想做的事情看起来像这样:

@{
     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();
  }

当然,这是行不通的。我该怎么做呢?

I need to render a DropDown list and I don't want to pass list's values to the View as a part of the model.

Basically what I'm trying to do looks like that:

@{
     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)

And the action method

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

Of course that wouldn't work. How should I do that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

七婞 2024-11-18 06:48:29

将其放入 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 是一个动态类型的“东西”持有者,你几乎可以将任何东西粘在那里。 :) 它的目的是将不属于模型一部分的东西传递给视图。

Put it in the ViewBag. In your controller you can do this:

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

Then in your View simply change your DropDownList to this:

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

ViewBag is a dynamically typed holder of "stuff", you can stick almost anything in there. :) It's meant to pass things to a view that aren't part of the model.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文