我正在使用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 ......这很难理解。
任何提示或帮助???
由于
答案 0 :(得分:3)
您需要使用正确的重载:
Page.GetRouteUrl("Add Products", null);
此GetRouteUrl
重载使用 RouteName 。
您也可以使用Route Url表达式:
http://msdn.microsoft.com/en-us/library/system.web.compilation.routeurlexpressionbuilder.aspx