0

データベースから収集したデータを使用して ActionLinks を作成することにより、メニューを作成しようとしています。私は@item.name、@item.ActionNameで試しました....しかし、うまくいきません....私は何か間違ったことをしていますが、何が見つかりません....助けてください。ありがとう

<ul id="menu">
    @foreach (var item in ViewBag.MenuList) 
    { 
        <li class="ajax_link">
            @Html.ActionLink(item.Name, item.ActionName, item.ControllerName)
        </li>
        <li>|</li>
    }
</ul>
4

1 に答える 1

3

ViewBag をキャストする必要があります。MenuListと呼ばれるクラスまたはそれに似たクラスがあると思います。コードをこれに変更します

@foreach (var item in ViewBag.MenuList as List<HomeController.MenuList>)
{ 
  <li class="ajax_link">
     @Html.ActionLink(item.Name, item.ActionName, item.ControllerName)
  </li>

または、面倒な ViewBag を完全に捨てて、viewModel を優先すると、元の構文が期待どおりに機能します。つまり、次のようになります。

メニュー項目のリストを viewModel プロパティにする

public class MenuList
{
    public string Name { get; set; }
    public string ActionName { get; set; }
    public string ControllerName { get; set; }
}

public class ViewModel
{
    //...
    public List<MenuList> MenuLists { get; set; }
}

ビューを厳密に入力する

 @model MvcApplicationForTestingStuff.Controllers.HomeController.ViewModel

そして、あなたのアクションリンクはこの構文で動作します

   <ul id="menu">
    @foreach (var item in Model.MenuLists) 
     { 
       <li class="ajax_link">
            @Html.ActionLink(item.Name, item.ActionName, item.ControllerName)
        </li>
        <li>|</li>
    }
</ul>
于 2013-03-22T14:19:13.430 に答える