2017-05-19 18 views
1

私はトップリンクバーに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})ですが、ActionLinkLength=4に翻訳されて参照してください。 私は、オブジェクトより安全なものを渡すことができます、html文字列のように。しかし私はここで間違っていたことを知りたい。オブジェクトをビューに渡すことで修正する方法。

+1

を聞かせて、あなたの問題を解決するのに役立ちますモデルを部分的に渡すだけではないのですか? –

+0

この部分図はサイトマップを表示するためのものです。クエリデータベースでモデルデータを取得できます。通常の場合、すべてのページを生成できます。一般的に、パーシャルビューに渡す必要のあるデータは、現在のページだけなので、別の色で表示されます。しかし、特別な状況では、サイトマップのリンクにはルートオブジェクトが必要です(現在のビューに依存します)。それは私の質問についてです。ルートオブジェクトを部分ビューに渡すとき。パーシャルのActionLink()は正しく表示できません。残りのデータは、この部分的なビューには役立ちません。 – Chris

+0

なぜですか?モデルに基づいたメインビューのコードで既にコードを実行している場合は、 '@ Html.Partial(" TopNavBar "、Model)'を使用してモデルを部分に渡し、以前使用していたコードを部分的です。いずれの場合でも、メニューの一部を返す '[ChildActionOnly]'メソッドを呼び出すには、 '@ Html.Action()'を使うべきです。 –

答えて

1

クリス、我々はHTML属性

にnullを設定するのを忘れたとき= 4の問題は、私はあなたがActionLinkのの下に過負荷を使用している願って、発生します長さに一般的には、この翻訳:

enter image description here

もしそうなら、最後のパラメータにnullを設定してください。つまり、IDictionary htmlAttribute nullです。それが動作するかどうかはわかりません。

だからコードは次のようになります。

@Html.ActionLink("New Part", "NewPart", actionRouteValueDict["NewPart"], null) 

希望これは親切に、なぜあなたは私が自分の考えやフィードバックを知って

おかげ カルティク

関連する問題