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

もちろん、それはうまくいきません。どうすればいいですか?

4

1 に答える 1

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は動的に型付けされた「もの」のホルダーであり、ほとんど何でもそこに貼り付けることができます。:)モデルの一部ではないものをビューに渡すことを目的としています。

于 2011-06-01T16:56:11.703 に答える