問題タブ [asp.net-mvc-sitemap]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net-mvc - 別のアセンブリからの MvcSiteMapProvider + Autofac + ISiteMapNodeVisibilityProvider
MvcSiteMapProvider で Autofac を使用してカスタム ISiteMapNodeVisibilityProvider (SiteMapNodeVisibilityProviderBase) を登録する方法を理解するのに最も苦労しています。
可視性プロバイダーを別のアセンブリに移動するまで、すべてが正常に機能していました。今、私が何をしようとしても、私はいつも得ます
「MyWasWorkingVisibilityProvider、MyNewAssembly」という名前の可視性プロバイダー インスタンスが見つかりませんでした。DI 構成を調べて、この名前の可視性プロバイダー インスタンスが存在し、正しく構成されていることを確認してください。
ドキュメンテーションとコードによると、MvcSiteMapProvider
どうにかして...に入る必要があるようSiteMapNodeVisibilityProviderStrategy
です...そして、以下でそれを行ったと思います...しかし、私はAutofac忍者ではありません。
ではMvcSiteMapProviderModule.cs
、考えられるすべての場所に新しいアセンブリを追加しました...
しかし、それでもうまくいきません。
価値があるのは、特定のメニュー項目の可視性プロバイダーがデータベースで構成され、メニュー構造全体が、可視性プロバイダーを移動した場所と同じアセンブリにある動的ノード プロバイダーで読み込まれることです。動的ノード プロバイダーは、可視性プロバイダーを読み込もうとしているところまで到達しているため、明らかに機能しています。
https://github.com/maartenba/MvcSiteMapProvider/issues/237が役に立ちそうだと思ったのですが、可視性プロバイダー固有のコードをコンパイルすることができませんでした..
効果がなかった別の例: MVC サイト マップ プロバイダー - SiteMapPath のパフォーマンスが非常に遅い?
だから私は今立ち往生しています。私は Autofac または MvcSiteMap プロバイダーのウィザードではありませんが、前述のように、可視性プロバイダーを別のアセンブリに移動するまで、すべてが正常に機能していました。
あなたの時間と注意をありがとう!この時点で私はイライラしています。
video-streaming - Azure メディア ストリーミング サービスを使用してサイトマップにビデオ ノードを追加するにはどうすればよいですか?
新しいウェブサイトのサイトマップを作成しようとしています。
私は Azure Media Services を使用してビデオをエンコードしており、消費用に 10 の異なるエンドポイントを提供しています (ビデオ/mp4、application/vnd.ms-sstr+xml、application/dash+xml、application/vnd. apple.mpegurl)。
これらすべてのソースを、各ビデオ ランディング ページの site.xml のビデオ ノードに追加するにはどうすればよいですか?
asp.net-mvc - アクション パラメータを mvcsitemap のノードとして使用する
私のカスタムルートは:
Mvc.sitemap
は:
私のIndex
機能は次のとおりです。
- ノードが表示され
preservedRouteParameters
ません。なぜですか? - 以下に説明するようにノードを表示する方法。
URL :http://localhost:59328/Home/Index/mobiles
予想されるサイトマップ:Home > mobiles
URL:http://localhost:59328/Home/Index/mobiles/htc
予想されるサイトマップ:Home > mobiles > htc
URL:http://localhost:59328/Home/Index/mobiles/htc/m8
予想されるサイトマップ:Home > mobiles > htc > m8
Url:http://localhost:59328/Home/Index/mobiles/htc/m8/12/title
予想されるサイトマップ: Home > mobiles > htc > m8 > title
(メモ ID はサイトマップに含まれていません)
しかし、実際のサイトマップは常にHome
unit-testing - SiteMaps.Current.CurrentNode を使用する MVC 5 コントローラーの単体テスト
ブレッドクラム ノードのタイトルを、ユーザーが見ている項目の値に変更するコントローラー アクションがいくつかあります。
これは、サイトを通常どおり表示している場合は正常に機能し、希望どおりに動作します..
ただし... Moq と FluentMVCTesting を使用してコントローラーのアクションを単体テストしようとすると、エラーが発生します。
http://www.shiningtreasures.com/post/2013/08/14/mvcsitemapprovider-4-unit-testing-with-the-sitemaps-static-methodsからSiteMaps.Loader = new Mock<ISiteMapLoader>().Object;
例を追加しました
コントローラー コンテキストを作成する
テストごとにコントローラーを初期化する
次に、テスト自体
次のエラーが発生しますSystem.NullReferenceException: オブジェクト参照がオブジェクトのインスタンスに設定されていません。これはvar node = SiteMaps.Current.CurrentNode;
次に、別のテストを追加します
MvcSiteMapProvider.MvcSiteMapExceptionを取得します。サイトマップ ローダーは、Global.asax の Application_Start イベントでのみ設定でき、再度設定することはできません。外部依存性注入コンテナーを使用している場合は、web.config ファイルの AppSettings セクションの「MvcSiteMapProvider_UseExternalDIContainer」を「true」に設定します。MvcSiteMapProvider.SiteMaps.set_Loader (ISiteMapLoader 値) で
次にSiteMaps.Loader = new Mock<ISiteMapLoader>().Object;
、テストの初期化に移ります。
同じエラーMvcSiteMapProvider.MvcSiteMapException: サイトマップ ローダーは、Global.asax の Application_Start イベントでのみ設定でき、再度設定することはできません。外部依存性注入コンテナーを使用している場合は、web.config ファイルの AppSettings セクションの「MvcSiteMapProvider_UseExternalDIContainer」を「true」に設定します。MvcSiteMapProvider.SiteMaps.set_Loader (ISiteMapLoader 値) で
SiteMaps.Loader = new Mock<ISiteMapLoader>().Object;
質問 -複数のアクションをテストする場合、単体テストで最適な場所はどこですか
質問 -var node = SiteMaps.Current.CurrentNode;
コントローラーで静的を使用するのが最善の方法ですか、それともより良い方法がありますか(Unity を使用)
ご協力いただきありがとうございます
c# - @Html.MvcSiteMap().SiteMapPath() 例外:「あいまいなコントローラーです。複数のコントローラーの種類が見つかりました
@Html.MvcSiteMap().SiteMapPath()
ブレッドクラムトレイルを構築するために使用しています。
私は2つのコントローラーを持っています.1つはDealsContorllerBaseのクラスから継承されたDealsControllerです。どちらのクラスにも独自の Index() メソッドがあり、子の Index() が親クラスの Index() をオーバーライドします。私の Mvc.sitemap では:
RegisterRoute 関数では:
...
...
「InvestX.UI.Web」プロジェクト内で定義された DealController と、「InvestX.UI.Controllers」プロジェクト内で定義された DealsControllerBase。
この例外全体:
あいまいなコントローラー。「DealsController」のコントローラー タイプが複数見つかりました。一致したタイプは次のとおりです。
InvestX.UI.Web.Controllers.DealsController InvestX.UI.Controllers.DealsControllerBase`1
コントローラーの名前空間を ControllerBuilder.Current.DefaultNamespaces に追加して検索する場所を絞り込むか、ControllerTypeResolverFactory の areaNamespacesToIgnore パラメーターに追加して名前空間を除外することを検討してください。
DealsController が DealsControllerBase から継承されておらず、DealsController を使用するだけであれば、すべて問題ありません。この例外は、DealsController または DealsControllerBase のどちらの Index() アクションを実行するかによって発生しました。私の質問は、 mvcSiteMapNode がこのような親/子コントローラー階層をどのように処理するかです。