0

デフォルトの MvcHandler にいくつかの機能を追加しようとしています。何が起こっているか: Pascal Case の URL の代わりに破線の URL を使用したかったのです。つまり、コントローラーが SomeController の場合、URL を /SomeController ではなく /some-controller にしたかったのです。

私の最善の回避策は次のとおりです。各コントローラーを目的の各 URL にマップする 1 つのマッピング ファイル URLMappings.xml を作成しました。次に、デフォルトの Route クラスを拡張して、これに基づいて発信 URL を生成し、デフォルトの RouteHandler を拡張して、これに基づいて URL を理解しました。マッピングが作成されていなくても、フレームワークはデフォルトの動作を使用するため、これは問題なく機能します。

私のポイントは: これにより、ルーティング システムは両方の種類の URL を理解していたため、重複コンテンツの SEO 問題が発生しました。次に、次のことを実装したいと思いました。

  1. コントローラーの値を取得する
  2. いくつかのマッピングでコントローラー名が値と一致するかどうかを確認します
  3. 一致する場合は、入力された URL よりも適切な URL があり、404 が返されます。

私は Web で検索しましたが、これを行う唯一の方法は、新しい IHttpHandler を作成することでした。ただし、すべての MVC 機能が必要なので、ゼロから作成する必要はありません。このロジックを ProcessRequest に配置したいだけですが、メソッドのオーバーライドされたバージョンは実行されていません。

誰かがこれに対処する方法を教えてもらえますか? 質問がばかげている場合、または詳細が不十分である場合は申し訳ありません。さらに情報が必要な場合は、教えてください。

4

1 に答える 1

1

カスタムは必要ありませんが、カスタムは必要MvcHandlerですRoute。という名前のこの機能用の NuGet パッケージが既にありますLowercaseRoutesMVC。自由にダウンロードして、 を調べて、source code必要に応じて調整してください (ダッシュを配置したい場所に配置するため)。

于 2013-02-25T14:09:19.610 に答える