2

通常、global.asaxファイルには次のサンプルコードがあります。だから、私の質問は、どのように複数のMapRouteを持つことができ、それらをどのように使用するかです???

次のようなURLが必要です:

http://domain/Home.aspx/Index/Cricket-Ball/12

        public static void RegisterRoutes(RouteCollectionroots)
        {{
            ルート.IgnoreRoute( "{resource} .axd / {* pathInfo}");

            ルート.MapRoute(
                "デフォルト"、
                "{controller} / {action} / {id}"、
                new {controller = "Home"、action = "Index"、id = UrlParameter.Optional}
            );
        }

私はこのようなものが欲しいのですが、SEOフレンドリーなURLを取得できるようにこのルーティングを使用する方法がわかりません:

        public static void RegisterRoutes(RouteCollectionroots)
        {{
            ルート.IgnoreRoute( "{resource} .axd / {* pathInfo}");

            ルート.MapRoute(
                「デフォルト1」、
                "{controller} / {action} / {productname} / {id}"、
                new {controller = "Home"、action = "Index"、productname = UrlParameter.Optional、id = UrlParameter.Optional}
            );

            ルート.MapRoute(
                "デフォルト"、
                "{controller} / {action} / {id}"、
                new {controller = "Home"、action = "Index"、id = UrlParameter.Optional}
            );
        }

前もって感謝します。

4

2 に答える 2

3

これは一般的なURLではなく、具体的なURL(製品を指す)なので、次のように使用できます。

public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "Products",
            "home/index/{productname}/{id}",
            new { controller = "Home", action = "Index" }
        );

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

したがって、「Products」ルートに一致しないものはすべて「Default」になります。間違いだと思うので、ルートに「.aspx」を追加しなかったことに注意してください。実際に必要な場合は、ルートに追加するだけです。

routes.MapRoute(
            "Products",
            "home/index.aspx/{productname}/{id}",
            new { controller = "Home", action = "Index" }
        );

また、次のようなより良いURLを使用することをお勧めします。

routes.MapRoute(
            "Products",
            "products/{productname}/{id}",
            new { controller = "Home", action = "Index" }
        );
于 2012-10-03T06:18:52.047 に答える
1

使用するルーティングの例は、WebFormsではなくASP.NETMVC用です。このブログ投稿で説明されているように、別のバリエーションを使用する必要があります。

http://weblogs.asp.net/scottgu/archive/2009/10/13/url-routing-with-asp-net-4-web-forms-vs-2010-and-net-4-0-series。 aspx

例:

routes.MapPageRoute(
    "route-name",
    "products/{id}",
    "~/Products.aspx");

次に、Page_Loadで、idのルート値を次のように抽出する必要があります。

int id = Page.RouteData.Values["id"] as int;
于 2012-10-03T06:03:01.487 に答える