4

Webフォームを使用してasp.netWebアプリケーションを作成しています。製品に適したURLへの登録ルートを使用しています。

以下はGlobal.asax.csのコードです。

void Application_Start(object sender、EventArgs e){//アプリケーションの起動時に実行されるコードRegisterRoutes(RouteTable.Routes); }

    void RegisterRoutes(RouteCollection routes)
    {
        // Register a route for Categories/All
        routes.MapPageRoute(
           "All Categories",      // Route name
           "Categories/All",      // Route URL
           "~/AllCategories.aspx" // Web page to handle route
        );

        // Route to handle Categories/{CategoryName}. 
        // The {*CategoryName} instructs the route to match all content after the first slash, which is needed b/c some category names contain a slash, as in the category "Meat/Produce"
        // See http://forums.asp.net/p/1417546/3131024.aspx for more information
        routes.MapPageRoute(
           "View Category",               // Route name
           "Categories/{*CategoryName}",  // Route URL
           "~/CategoryProducts.aspx"      // Web page to handle route
        );
        // Register a route for Products/{ProductName}
        routes.MapPageRoute(
           "View All Product",           // Route name
           "Products", // Route URL
           "~/ViewProducts.aspx"      // Web page to handle route
        );


        // Register a route for Products/{ProductName}
        routes.MapPageRoute(
           "View Product",           // Route name
           "Product/{ProductName}", // Route URL
           "~/ViewProduct.aspx"      // Web page to handle route
        );


        // Register a route for Products/{ProductName}
        routes.MapPageRoute(
           "Add Product",           // Route name
           "NewProduct", // Route URL
           "~/AddProduct.aspx"      // Web page to handle route
        );


    }

今私が置くと1ページに

        lnkNewProduct.NavigateUrl = Page.GetRouteUrl("Add Product");

プロジェクトを実行すると、間違ったhrefURLが生成されます。

なぜこれが起こるのか誰か教えてもらえますか?現在、http:\ localhost:5770 \ Categorys \ All?Length =11のようなURLが表示されています...これは理解しにくいです。

ヒントやヘルプ???

ありがとう

4

1 に答える 1

3

正しいオーバーロードを使用する必要があります。

Page.GetRouteUrl("Add Products", null);

このGetRouteUrlオーバーロードはRouteNameを使用します。

Route Url 式も使用できます。

http://msdn.microsoft.com/en-us/library/system.web.compilation.routeurlexpressionbuilder.aspx

于 2012-11-23T01:50:42.380 に答える