2016-07-01 12 views
1

MVC 5、純4.5mvcsitemapprovider - 異なるページから同じのActionResultへの移動

次のように私はMvcSiteMapNodeAttributeを実装:

[MvcSiteMapNode(Title="Running Events", ParentKey="Events", Key="RunningEvents")] 
public ActionResult RunningEvents() 
{ 
    return View(); 
} 

を私は複数の場所からこのページにアクセスし、中にパン粉を維持する必要がありますタック(正しい呼び出しメソッドから)。ただし、ParentKeyは、呼び出しの発信元を指定し、ParentNodeに基づいて設定します。これは、呼び出すActionResultを親にし、ParentKeyソリューションと同じように「ハードコーディング」しないようにしたいので理想的ではありません。 ParentKeyは実行時にもParentNodeでも編集できません。これを回避する唯一の方法は、異なる署名を持つActionResultを複製し、それに理想的でない同じタイトルを与えることです。

私はmvcルーティング、DynamicNodeProvider、ルートマッピングなどを読みましたが、この作業を行う方法が見つかりませんでしたか?私はmvcにもあまり慣れていないので、いくつかの指針を理解するでしょう。

おかげ

答えて

0

Multiple Navigation Paths to a Single Pageマニュアルを参照してください。

複数の場所で同じコントローラアクションを使用できます。ただし、必ず一意のルート値を設定する必要があります(通常、各URLは一意でなければなりません)。

これを行う最も自然な方法は、親カテゴリを使用してURLを設計することです。

routes.MapRoute(
    name: "Category1RunningEvents", 
    url: "Category1/RunningEvents", 
    defaults: new { controller = "Events", action = "RunningEvents", category="Category1" } 
); 

routes.MapRoute(
    name: "Category2RunningEvents", 
    url: "Category2/RunningEvents", 
    defaults: new { controller = "Events", action = "RunningEvents", category="Category2" } 
); 

routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{id}", 
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 

そしてcategoryフィールドによってルート一致を区別する。同じアクションで複数のMvcSiteMapNode属性を使用することができます。それぞれの属性はSiteMapの親キーが異なります。

[MvcSiteMapNode(Title="Category 1 Events", ParentKey="Events", Key="RunningEvents", Attributes = @"{ ""category"": ""Category1"" }")] 
[MvcSiteMapNode(Title="Category 2 Events", ParentKey="Category2", Key="Category2RunningEvents", Attributes = @"{ ""category"": ""Category2"" }")] 
public ActionResult RunningEvents() 
{ 
    return View(); 
} 

もちろん、これはルーティングを設定する唯一の方法ではありませんが、コンセプトをクリアする必要があります。唯一の制限は、は、ノードに対応する一致のルート値の一意のセットを使用する必要があるということです。しかし、であり、それぞれが異なる親ノードを持つ同じコントローラアクションを表す複数のノードであることがあります。

this answerも参照してください。

+0

応答NightOwlをありがとう。 –

関連する問題