1

Asp.net MVC とディレクトリ構造に関するこれらの質問をいくつか読みましたが、www.mysite.com/books/adventure/uk などの通常の URL ディレクトリを模倣する方法をまだ理解していません。

そして、Home、About、Contact Us などの標準的なサイト ページについて考えてみると、それぞれに Controller を作成したくないでしょうが、URL を www.mysite のようにしたくないでしょう。 com/home/about できれば www.mysite.com/about にしたいでしょう

これを理解するのに役立つ maproute オブジェクトを十分に理解している人はいますか?

ありがとう、ジャック

4

1 に答える 1

1

これは、global.asax.cs

デフォルトでは、新しい MVC プロジェクトは、規則に従う標準の「キャッチオール」ルートを追加します。www.mysite.com/Controller/Action/ID

www.mysite.com/about HomeController.About() アクションへのルーティングの例など、別のものが必要な場合は、キャッチオールの前に次のルートを追加します。

routes.MapRoute(
    "My About Route",
    "About",
    new { controller = "Home", action = "About" }
);

MVC キャッチオール規則に従わないカスタム ルートをいくつでも追加できます。必要に応じて、キャッチオール ルートを完全に置き換えることもできます。


編集:

以下のコメントに答えるために、考えられるすべてのアクションに対して必ずしもルートを追加する必要はありません。代わりに、キャッチオールが行っているように、URL のパターンに適合する単一のルートを作成できます。{controller}{action}は特別なキーワードです。

例:

1.) プログラムには SetController がありますが、ユーザーはそれらをバッチと呼ぶことに慣れています。

routes.MapRoute(
    "Batch",
    "Batch/{action}/{id}",
    new { controller = "Set", action = "Index", id = UrlParameter.Optional }
);

2.) コントローラーのオブジェクトのタイプでグループ化することを好みますが、URL は動詞/名詞の形式にします。

  • フライトコントローラー
  • ホテルコントローラー
  • /find/flight /book/flight
  • /検索/ホテル/予約/ホテル/ヒルトン

routes.MapRoute(
    "NewCatchall",
    "{action}/{controller}/{name}",
    new { controller = "Home", action = "Index", name = UrlParameter.Optional }
);

2 番目の例では、デフォルト ルートを完全に置き換えることができ、可能なすべての URL がその形式に適合します。したがって、他のルートをチェックするために何も続行しません。ルートは順番にチェックされ、リクエストに一致する最初のパターンが使用され、残りは無視されることを知っておくことが重要です。

これらは、学習するときに役立ちました。

于 2012-07-12T14:21:31.977 に答える