1. MVC

MVCルーティングを活用してください

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

Sitecoreはデフォルトのルーティング機構ですが、MVCベースのソリューションではカスタムルートを追加できます。 このMSDN記事ではAPS.NET MVCルーティング全般について説明しています。このトピックは、Sitecore MVCソリューションでカスタムルートを作成する際に考慮すべきことのみを説明しています。説明はVisual Studio 2015とSitecore Rocksの使用に基づいています。以前のバージョンのVisual Studioでは、いくつかの詳細が異なります。

MVCルートを追加する最も安全で推奨される方法は、Initializeパイプラインにプロセッサを追加し、ルートを登録し、RouteConfigクラスでルートテーブルを実装することです。これにより、Sitecoreルートを誤って壊すのを防ぎます。

カスタムルートを使用するには、以下の条件が必要です:

カスタムルートを定義してください

カスタムルートを定義するには:

  1. RouteConfigクラスの実装におけるデフォルトルートを、解のApp_StartフォルダにあるVisual Studioが作成したRouteConfig.csファイルにコメントを書き出します。Visual Studioのコードは以下の通りです:

    { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); } }

  2. この例に似たルートを追加してください:

    routes.MapRoute("product", "product/{*pathInfo}", new { scItemPath = "/{*pathInfo}"});

    このルートにより、コンテンツツリーの根にある項目は /name of productとしてもアクセス可能です。 /product/name of product.

    Sitecoreはルートを定義する際に使用できるカスタム値を提供します:

    • scLanguage – リクエストのコンテキスト言語です。
    • scItemPath – ルートURLに関わらず、この要素の値を用いてアイテムが解決されます.
    • scKeysToIgnore – Sitecoreに無視してほしいルートURLのキーです。もしルート内に存在した場合、URLからアイテムを解決しようとする前に削除されます。

    このようにルートごとにコントローラーを指定することができます:

    routes.MapRoute("product", "product/{*pathInfo}", new { scItemPath = "/{*pathInfo}", controller="Product});

カスタムルートでコントローラを指定していない場合、デフォルトのSitecoreコントローラがリクエストを処理します。同様に、アクションが指定されていない場合はデフォルトのアクション 'Index’ が使われます。

InitializeパイプラインのSitecore.Mvc.Pipelines.Loader.InitializeRoutesプロセッサは、すべてのルートにセッションが存在する必要があります。したがって、Sitecore.Mvc.Pipelines.Loader.InitializeRoutesプロセッサの前にカスタムルート登録プロセッサを追加すれば、コントローラーでセッションが利用可能になります。

Sitecore.Mvc.Pipelines.Loader.InitializeRoutesprocessor後に初期化されたプロセッサでルートを登録すると、そのセッションは利用できず、コントローラーリクエストも追跡されません。これは、追跡不要のカスタムルート、例えばWeb APIルートに有用です。

!注SitecoreはhttpRequestBeginパイプラインを実行し、Sitecoreコンテキストを設定してからリクエストを転送しますMVC。しかし、SitecorehttpRequestBeginは、Sitecore.configファイルのFilterUrlExtensionsプロセッサのパラメータにルートの終点が拡張子として記載されている場合のみ実行されます。

ASPX、ASHX、ASMX\*\*

(デフォルト設定はSitecoreバージョンによって多少異なります。)設定ファイルをパッチで修正し、例えば.txtを許可される拡張子として追加できます:

ASPX、ASHX、ASMX、TXT

カスタムルートを登録してください

カスタムルートを登録するには、プロセッサを作成し、Initializeパイプラインに追加します:

  1. 解決策の中で「パイプライン」というフォルダを作成してください。

  2. フォルダを右クリックして「 追加、新しいアイテム...」を選択してください。

  3. 新しいアイテムを追加 - mvc 」ダイアログで、「 Sitecore」「 Pipelines」「 Loader Processor」をクリックしてください。

    Add new item
  4. Visual Studioは以下の内容をファイルに追加します:

    namespace mvc.Pipelines{ using Sitecore.Diagnostics; using Sitecore.Pipelines; // TODO: \App_Config\include\LoadRoutes.config created automatically when creating LoadRoutes class. public class LoadRoutes { public void Process(PipelineArgs args) { Log.Info("Sitecore is starting", this); } } }

  5. ファイルのProcessメソッドでは、作成したルートを登録するコードに置き換えます:

    RouteConfig.RegisterRoutes(RouteTable.Routes);

    Sitecore Rocksは自動的にパッチ構成ファイルを作成し、プロセッサをInitializeパイプラインに追加します:

この記事を改善するための提案がある場合は、 お知らせください!