是否可以将参数作为路径的第一个节点?

时间:2010-11-26 19:44:49

标签: asp.net-mvc-2 asp.net-mvc-routing

我想在ASP.NET MVC中使用以下类型的路由。

  • {a}/{b} - > SiteController.Search(a,b)(其中a和b是任意字符串)

虽然还有HomeController

  • home/index - > HomeController.Index()

这可能吗?家庭控制器路由是否可以硬编码? 即:

routes.MapRoute(
            "Home",                   // Route name
            "Home/{action}",          // URL with parameters
            new { action = "Index" }  // Parameter defaults
        );

1 个答案:

答案 0 :(得分:1)

如果不删除默认路由,这是不可能的,因为路由引擎无法消除这两个网址之间的歧义:

foo/bar
home/index

假设您希望第一个匹配{a}/{b}和第二个{controller}/{action}。即使您按照示例home/index对路线进行硬编码也始终与{a}/{b}的第一条路线匹配。

此外,如果ab可以是任意字符串,那么将它们作为查询字符串参数传递会更好。