2

次のような MVC 3 サイトに 2 レベルの親/子メニューを実装したいと考えています。

Company
 - Background
 - Contact

私は単一の親レベルのメニューを PartialView として実装しました...

 <div id="menu" class="block">
    <ul id="menuItems">
        foreach (var item in Model)
        {
        <li id="@item.Id">@Html.ActionLink(item.Name, item.Action,item.Controller)</li>
        }
    </ul>
 </div>

そしてそれを私のマスターページに含めました...

 @{Html.RenderAction("MainMenu", "Menu");}

問題は、親レベルで選択されたメニュー項目に基づいて 2 番目の子メニューをレンダリングしたいということです。これには、親の Id を、メニュー モデルを返すコントローラー アクションに渡すことが含まれます。この親 ID をコントローラー アクションに渡す方法がわかりません。誰でもこれについての洞察を提供できますか? MVC3とRazorを使用しています。

4

2 に答える 2

2

マルチレベルのメニューとサイトマップを処理するMvcSiteMapProviderを確認することをお勧めします。

于 2011-04-18T16:44:53.030 に答える
0

Razor を使用しているようです。私はそれに慣れていませんが、試してみます。基本的に、「id」の単一のプロパティを持つ新しいオブジェクトを MainMenu ビューに渡します。これにより、別のメニューが作成されます。MainMenu アクションは、id のオプション パラメータを取る必要があります。

public ActionResult MainMenu(int? id = null) {
  ...
}

新しいリスト項目は次のようになります。

<li id="@item.Id">@Html.ActionLink(item.Name, item.Action,item.Controller)

@{Html.RenderAction("MainMenu", "Menu", new { id = item.Id });}

</li>
于 2011-02-24T05:25:14.543 に答える