【发布时间】:2015-08-20 18:41:34
【问题描述】:
我有两个页面“Product.aspx”和“Category.aspx”。通过 URL 路由我想更改页面的 URL。
这是我的代码:
URLRoute.cs
public static void RegisterRoutes(RouteCollection routes)
{
routes.Ignore("{resource}.axd/{*pathInfo}");
routes.MapPageRoute("Product", "{CategoryName}/{ProductName}","~/Product.aspx");
routes.MapPageRoute("Category", "Category/{CategoryName}", "~/Category.aspx");
}
当我使用这段代码时
<a href="Mobile/Samsung"> Go To Product.aspx Page </a>
<a href="Category/Mobile"> Go To Category.aspx Page </a>
它在 Product.aspx 页面上重定向,而它应该转到不同的页面。
注意:网址必须是这样的
对于 Product.aspx 页面:www.example.com/Mobile/Samsung
这里 Mobile 是类别名称,samsung 是产品名称(都是动态的)。
对于 Category.aspx 页面:www.example.com/category/Mobile
这里 category 是静态类别名称,mobile 是类别名称(类别名称是动态的)。
【问题讨论】:
-
只需先切换顺序:
MapPageRoute用于类别,然后是产品。当ASP.NET尝试匹配一个路由时,它会从第一个路由开始,一直持续到找到匹配为止。在您的情况下,{CategoryName}/{ProductName}将始终匹配两条路线,并且永远不会转到类别路线。 -
非常有趣。非常感谢。
-
routes.MapPageRoute("Blog", "{BlogName}-{BlogID}", "~/AllBlog.aspx"); routes.MapPageRoute("Tour", "{TourName}", "~/AllTour.aspx");在这种情况下,两个页面都在 AllBlog.aspx 上重定向,但我需要 AllBlog.aspx 上的博客和 AllTour.aspx 页面上的游览。注意:我不想要 blog/blogname 这样的目录。
标签: c# asp.net-4.0