我正在尝试编写规则来映射URL但是因为我没有得到我想要的结果。到目前为止我有这个规则:
routes.MapRoute(
"Search", // Route name
"{controller}/{action}/{product}/{page}", // URL with parameters
new { controller = "Home", action = "Search", product = UrlParameter.Optional, page = UrlParameter.Optional } // Parameter defaults
);
使用这个我到目前为止可以达到这个结果:
localhost:8493/home/search/myproduct
localhost:8493/home/search/myproduct/2
但我想做这样的事情:
localhost:8493/myproduct
所以这将路由到home/search/myproduct
我尝试过以下但是没有用:
routes.MapRoute(
"DirectSearch", // Route name
"{product}/{page}", // URL with parameters
new { controller = "Home", action = "Search", } // Parameter defaults
);
有办法做到这一点吗?
添加
所以我在这里添加了映射到另一个动作的特定路线,但它不起作用:
routes.MapRoute(
"Tuna",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Tuna", id = UrlParameter.Optional }
);
答案 0 :(得分:1)
我认为你很接近。这应该有用;
routes.MapRoute(
"Search", // Route name
"{product}/{page}", // URL with parameters
new { controller = "Home", action = "Search", product = UrlParameter.Optional, page = UrlParameter.Optional } // Parameter defaults
);
请记住,框架将从上到下读取路径数据,并使用它找到匹配的第一个路径数据。因此,请确保在更一般的路线之前列出更具体的路线
修改强>