0

私はMVC4を使用していて、ルートを作成しようとしていますが、その方法がわかりません。

私のサイトにはいくつかのルートがあります。私が達成したいことは次のとおりです。

  • ルートに対応するすべてのURL、そのルートのコントローラーアクションが実行されます
  • ただし、URLに対してコントローラーアクションが見つからない場合は、特定のコントローラーアクションを実行する必要があります。www.mywebsite.com/level1/level2/level3には対応するルートがないため、特定のルートを呼び出して、コントローラーアクションの引数として文字列のリストでlevel1、level2、およびlevel3に渡します。アイテム数に制限はありません。

この情報を使用して、データがコンテンツ管理システムなどに存在するかどうかを確認します。

上記のルートを作成する方法はありますか?

4

2 に答える 2

1

あなたの提案は基本的にキャッチ404です。エラーを引き起こし、それをキャッチするように感じるのでエレガントに聞こえないかもしれませんが、404は単に適切なルートを特定できなかった後に取られるステップです. MVC フレームワークに「最終オプション」ルートがある場合は、適切なルートが見つからなかった後に選択されます。

2つのアプローチ

ルート方法

  • // リクエストを処理するルートが見つかりませんでした。404 ページを表示します。routes.MapRoute("Error", "{*url}", new { controller = "Error", action = "404" } );

-

また

-

web.config のカスタム エラー ハンドラー

<customErrors mode="On" >
       <error statusCode="404" redirect="~/CatchallController/CatchallAction" />
</customErrors>   

ルート マッチングなしによって発生する条件は 404 です。このようにして、すべての不一致を~/CatchallController/CatchallAction

| |

于 2013-01-22T04:26:05.170 に答える
0

ルート パターンでアスタリスクを使用して、「キャッチオール」(「可変長」ルート) を表すことができます。

例: "{controller}/{action}/{id}/{*catchall}"

これは、キャッチオール セグメント以降の任意の数のセグメントを持つ任意の URL と一致します。

より一般的なルートの前に、より具体的なルートを指定することを忘れないでください。

于 2013-01-22T15:56:22.857 に答える