0

mvc に複数のルートを登録したいのですが、必要な URL は次のとおりです。

http://mysite.com/myapps/[action]/[id]
http://mysite.com/myapps/[parameter]/build/
http://mysite.com/myapps/[parameter]/build/MyType1/[action]/[id]
http://mysite.com/myapps/[parameter]/build/MyType2/[action]/[id]
http://mysite.com/myapps/[parameter]/build/MyType3/[action]/[id]
http://mysite.com/myapps/[parameter]/build/MyType4/[action]/[id]
http://mysite.com/myapps/[parameter]/build/MyTyp51/[action]/[id]
http://mysite.com/myapps/[parameter]/messages/[action]/[id]
http://mysite.com/myapps/[parameter]/users/[action]/[id]
http://mysite.com/account/[action]/[id]
http://mysite.com/help/[action]/[id]
http://mysite.com/videos/[action]/[id]

どうすれば達成できますか?

ありがとう

4

1 に答える 1

0

これは、 RouteCollection (Route) クラスで定義されているMapRouteメソッドを使用して実現できます。

RouteConfig.csファイル (App_Startフォルダーの下にあります)を開くと、RegisterRoutes()メソッドが表示されます。このメソッド内で、次のようなデフォルト ルートが表示されます。

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

カスタム ルートを追加するには、次のようなものを追加します。

// Make sure your custom routes are placed BEFORE the default route
routes.MapRoute(
    name: "MyRoute01",
    url: "myapps/{action}/{id}",
    defaults: new { controller = "myapps", action = "Index", id = UrlParameter.Optional}
);

routes.MapRoute(
   name: "MyRoute02",
   url: "myapps/{parameter}/build/{MyType}/{action}/{id}",
   defaults: new { controller = "myapps", action = "Index", parameter = "MyDefaultParamValue", MyType="MyType1", id = UrlParameter.Optional }
);

上記のルートは、複数のルートを登録する「どのように達成できるか」に対する応答にすぎません。つまり、上記の例は、始めるためのヒントにすぎません。

コントローラーとアクションの名前の詳細を提供しておらず、URL パターンの意味を指定していないため、正確なルートを支援することはできません。つまり、クラスとメソッド (コントローラーとアクション) ) カスタム ルートを解決しますか?

URL は最終的に、特定のクラス (コントローラー) に存在する 1 つのメソッド (アクション) を呼び出すことに注意してください。そのため、カスタム ルートでは任意の URL パターンを作成できますが、URL パターンに基づいて起動するコントローラーとアクションをルートで指定する必要があることを理解する必要があります。

上記の情報が新しいものである場合は、MVC ルーティング システムがどのように機能するか (さらに言えば、機能しないか) を読んでおくのが賢明です。

于 2012-10-08T20:31:15.063 に答える