在MVC应用程序中添加路由规则

时间:2012-08-13 17:41:03

标签: c# asp.net-mvc-3 asp.net-mvc-routing url-routing

我正在尝试编写规则来映射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 }
        );

1 个答案:

答案 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
        );

请记住,框架将从上到下读取路径数据,并使用它找到匹配的第一个路径数据。因此,请确保在更一般的路线之前列出更具体的路线

修改

Here's a link to a discussion on custom routing