ASP.NET MVC路由,根据字符串数重定向到控制器

时间:2010-02-05 21:25:59

标签: asp.net-mvc routing

我有一个小网站,我正在努力,我需要有3条不同的路线,如:

  1. 的.com / ID /富
  2. 2 .com / id / foo / bar

    3 .com / id / foo / bar / user

    所以数字1将是foo的id。 路线2将是酒吧的id。 最后,路线3将是用户的身份。

    我如何设置路线来执行此操作?

1 个答案:

答案 0 :(得分:1)

如果所有这些都映射到单个控制器和操作,您可以像这样完成它:

  routes.MapRoute("Default",
                "{id}/{foo}/{bar}/{user}",
                new { controller = "Home", action = "Index", 
                      foo = String.Empty, 
                      bar = String.Empty, 
                      user = String.Empty }); 

您的索引操作如下:

public ActionResult Index(string id, string foo, string bar, string user) {}

如果您的意图是每个都是单独的操作,那么请考虑路由按照添加到路由表的顺序进行匹配。因此,总是按照最具体的顺序添加路线,你会没事的。所以:

  routes.MapRoute("Default",
                "{id}/{foo}/{bar}/{user}",
                new { controller = "Home", action = "FooBarUser" }); 

  routes.MapRoute("Default",
                "{id}/{foo}/{bar}/",
                new { controller = "Home", action = "FooBar" }); 

  routes.MapRoute("Default",
                "{id}/{foo}/",
                new { controller = "Home", action = "Foo" });