私は1つの剃刀レイアウトを持っています。このレイアウトはすべての私のビューに広がっています。
今日まで、このレイアウトのナビゲーションメニューは(別のコントローラ)でした。しかし、このメニューには動的なデータがあります。そして私はレイアウトページにそれをもう保つことができません。
各ナビゲーションビューでこのナビゲーションメニューをレンダリングするか、それとも一度しか作成せずにデータを渡すだけの他の方法がありますか?マスターページにない場合はナビゲーションメニューを置く場所 - asp mvc
これは、私はかみそりのレイアウトにナビゲーションメニューをレンダリングする方法である:
CommonMenuビューで@Html.Action("CommonMenu", "Navigation", new { area = "CityPage" })
私はホームリンクがあります。
<li> @Html.ActionLink("Home", "Index", "Home", new { area = "CityPage", city = ViewBag.City, countryCode = ViewBag.CountryCode }, null)
をそして私は、そのメニューで1ページを開きます。私が家をクリックすると、私は市内の家に帰ることを期待しています(イギリス、ロンドンのように)。
しかし、私はこのページからチューリッヒのような他の都市に行くことができます。
これでナビゲーションメニュー全体を再バインドする必要があります。
ひげそりのレイアウトでメニューをレンダリングするとどうすればいいですか?
更新
これは私が別の都市のページから行く方法です:
@Html.ActionLink("Go To London", "Index", "Home", new { area = "CityPage", city = "London", countryCode = "UK" }, null)
私は、このリンクミュー「CommonMenu」アクションが呼び出された上でクリックすると:
[ChildActionOnly]
public PartialViewResult CommonMenu(string countryCode, string city)
{...
しかし、いくつかのこのアクションが数回呼び出される理由:
最初に両方の値がnullです。
2番目の値はUK、Londonです。
3回目はnullです。
これは私のページを壊してしまいます。
この動的なデータの問題点は何ですか?なぜあなたはそれをレイアウトに残すことができないのですか?これは、各ビューでレンダリングされるメニューに最適な場所です。 –
私は更新された質問があります。 – 1110
私は本当に問題が何かを理解していません。なぜあなたはHtml.Actionを使用できませんか? –