2010-02-05 36 views
0

我有一个小网站,我在哪里,我需要有三个不同的途径,如工作的数量:ASP.NET MVC路线,重定向到控制器依赖于字符串

  1. 的.com/ID /富

2的.com/ID /富/酒吧

3的.com/ID /富/酒吧/用户

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

我该如何设置路线来做到这一点?

+1

你可以发布的行动,将接收路线?这将有助于看到一些代码示例。 – 2010-02-05 21:28:34

回答

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" }); 
+0

谢谢,你的第二种方法正是我所期待的。我在路由语法上有点生疏。 – ddd 2010-02-05 21:48:11

相关问题