1

asp.net MVC 4 でビルドした Web アプリがあります。次の 3 種類のルートが必要です。

  1. /アクション
  2. /アクション/ID
  3. /id/id2

global.asax で、次のようにルートを変更しました。

routes.MapRoute(
           name: "Without Action",
           url: "{id}/{id2}",
           defaults: new { controller = "Home", action = "City_Category" },
           namespaces: new[] { "Namespace.Controllers" }
        );

        routes.MapRoute(
            name: "Without Controller",
            url: "{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
            namespaces: new[] { "Namespace.Controllers" }
        );

しかし、{action}/{id} を試すと、global.asax で定義された最初のルートに移動します。URL が {action} または {id}/{id2} の場合にのみ機能します。

3つのルートすべてを機能させるにはどうすればよいですか?

ありがとう!

4

2 に答える 2

0

{id}andが常に数値である場合{id2}は、ルートに制約を追加して、それらの値が数字の場合にのみ有効になるようにすることができます。

routes.MapRoute(
           name: "Without Action",
           url: "{id}/{id2}",
           defaults: new { controller = "Home", action = "City_Category" },
           new { id = @"\d+", id2 = @"\d+" }
           namespaces: new[] { "Namespace.Controllers" }
        );
于 2013-08-02T18:26:01.470 に答える