私はトップリンクバーにactionlink()のリストを持っています。そのうちの1人がデータをコントローラに渡します。パーシャルビューにデータを渡すActionLink
int? partCategoryID = Model.SelectedPartCategory == null ? -1 : Model.SelectedPartCategory.PartCategoryID;
@Html.ActionLink("New Part", "NewPart", new { PartCategoryID = partCategoryID })
正常です。その後、アクションリンクの数が急激に増えていることがわかりました。だから私はサイトマップを構築しようとしています。ビューはすべてのアクションリンクデータを部分ビューに渡します。また、部分的にすべての上部メニューバーが処理されます。元のビュー(簡体字)で
:パーシャルビューで
Dictionary<string, object> actionRouteValueDict = new Dictionary<string, object>();
int? partCategoryID = Model.SelectedPartCategory == null ? -1 : Model.SelectedPartCategory.PartCategoryID;
actionRouteValueDict.Add("NewPart", new { PartCategoryID = partCategoryID });
@Html.Partial("TopNavBar", new ViewDataDictionary { {"Routes", actionRouteValueDict} });
、それは「同じことをやって」います:
Dictionary<string, object> actionRouteValueDict = (Dictionary<string, object>)ViewData["Routes"];
@Html.ActionLink("New Part", "NewPart", actionRouteValueDict["NewPart"])
しかし、どういうわけか、新しい@Html.Action
は、オブジェクトを正しく処理することはできません、私はデバッグすることができますactionRouteValueDict["NewPart"]
がまだ正しい({PartCategory = -1})
ですが、ActionLink
Length=4
に翻訳されて参照してください。 私は、オブジェクトより安全なものを渡すことができます、html文字列のように。しかし私はここで間違っていたことを知りたい。オブジェクトをビューに渡すことで修正する方法。
を聞かせて、あなたの問題を解決するのに役立ちますモデルを部分的に渡すだけではないのですか? –
この部分図はサイトマップを表示するためのものです。クエリデータベースでモデルデータを取得できます。通常の場合、すべてのページを生成できます。一般的に、パーシャルビューに渡す必要のあるデータは、現在のページだけなので、別の色で表示されます。しかし、特別な状況では、サイトマップのリンクにはルートオブジェクトが必要です(現在のビューに依存します)。それは私の質問についてです。ルートオブジェクトを部分ビューに渡すとき。パーシャルのActionLink()は正しく表示できません。残りのデータは、この部分的なビューには役立ちません。 – Chris
なぜですか?モデルに基づいたメインビューのコードで既にコードを実行している場合は、 '@ Html.Partial(" TopNavBar "、Model)'を使用してモデルを部分に渡し、以前使用していたコードを部分的です。いずれの場合でも、メニューの一部を返す '[ChildActionOnly]'メソッドを呼び出すには、 '@ Html.Action()'を使うべきです。 –