、一つはのクラスから継承さDealsControllerです。。RegisterRoute機能で
<mvcSiteMapNode title="Deals" controller="Deals" action="Index" >
<mvcSiteMapNode title="Deal" controller="Deals" action="ShowSpecificDeal" />
</mvcSiteMapNode>
:
をDealsContorllerBase 両クラスは子のインデックス()は、親クラスのインデックスを()よりも優先されます私のMvc.sitemapで 、独自のインデックス()メソッドを持っています210...
routes.MapRoute(
"Deals", // Route name
"Deals", // URL with parameters
new { controller = "Deals", action = "Index" }, // Parameter defaults
new[] { "InvestX.UI.Web", "InvestX.UI.Controllers" } // namespaces
);
...
"InvestX.UI.Controllers" プロジェクトの内部で定義された "InvestX.UI.Web" プロジェクトとDealsControllerBase内で定義されたDealsController。
このような全体の例外:
あいまいコントローラ。 'DealsController'に複数のコントローラタイプが見つかりました。マッチタイプは次のとおりです。
InvestX.UI.Web.Controllers.DealsController InvestX.UI.Controllers.DealsControllerBase`1
はControllerBuilder.Currentにあなたのコントローラ 名前空間を追加することにより、検索する場所を狭く考えてみましょう。 DefaultNamespacesまたは は、ControllerTypeResolverFactoryのareaNamespacesToIgnore パラメータに名前空間を追加して除外します。
DealsControllerがDealsControllerBaseから継承されておらず、DealsControllerだけを使用していれば、すべてが問題ありません。 例外は、取るべきIndex()アクション、DealsControllerまたはDealsControllerBaseです。 私の質問は、どのようにmvcSiteMapNodeが親/子コントローラのhierarkyをこのように処理するのですか?
こんにちはNightOw888、あなたの迅速な対応と便利なオプションに感謝します。私はオプション#2が私の最高の選択であり、私のために完璧に働いていることが分かった。私は、nodes.titileなどの設定が追加されたDealsControllerクラスにオーバーライドメソッドを追加する必要があります。 – Henry