asp.net 4.0应用程序中的Page.GetRouteUrl()错误。任何URL路由帮助

时间:2012-09-14 11:16:53

标签: asp.net .net-4.0 routes

我正在使用Web表单创建asp.net Web应用程序,我正在使用注册路由来生成友好的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
        );


    }

现在在我放

的一页中
        lnkNewProduct.NavigateUrl = Page.GetRouteUrl("Add Product");

我运行项目时会产生错误的href url。

任何人都可以告诉为什么会发生这种情况?目前它显示的网址如http:\ localhost:5770 \ Categories \ All?Length = 11 ......这很难理解。

任何提示或帮助???

由于

1 个答案:

答案 0 :(得分:3)

您需要使用正确的重载:

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

GetRouteUrl重载使用 RouteName

您也可以使用Route Url表达式:

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