注册多条路线

时间:2012-10-08 18:23:17

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

我想为mvc注册多条路线,我所需的网址如下:

http://mysite.com/myapps/[action]/[id]
http://mysite.com/myapps/[parameter]/build/
http://mysite.com/myapps/[parameter]/build/MyType1/[action]/[id]
http://mysite.com/myapps/[parameter]/build/MyType2/[action]/[id]
http://mysite.com/myapps/[parameter]/build/MyType3/[action]/[id]
http://mysite.com/myapps/[parameter]/build/MyType4/[action]/[id]
http://mysite.com/myapps/[parameter]/build/MyTyp51/[action]/[id]
http://mysite.com/myapps/[parameter]/messages/[action]/[id]
http://mysite.com/myapps/[parameter]/users/[action]/[id]
http://mysite.com/account/[action]/[id]
http://mysite.com/help/[action]/[id]
http://mysite.com/videos/[action]/[id]

我怎么能够实现?

感谢

1 个答案:

答案 0 :(得分:0)

您可以使用MapRoute(路线)类中定义的RouteCollection方法来实现此目的。

如果您打开 RouteConfig.cs 文件(位于App_Start文件夹下),您将看到RegisterRoutes()方法。在此方法中,您将看到如下所示的默认路由:

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

要添加自定义路线,您需要添加以下内容:

// Make sure your custom routes are placed BEFORE the default route
routes.MapRoute(
    name: "MyRoute01",
    url: "myapps/{action}/{id}",
    defaults: new { controller = "myapps", action = "Index", id = UrlParameter.Optional}
);

routes.MapRoute(
   name: "MyRoute02",
   url: "myapps/{parameter}/build/{MyType}/{action}/{id}",
   defaults: new { controller = "myapps", action = "Index", parameter = "MyDefaultParamValue", MyType="MyType1", id = UrlParameter.Optional }
);

上述路线只不过是对“如何实现”注册多条路线的回应。换句话说,上面的例子只不过是一个让你入门的小提示。

我们无法在确切的路线中为您提供帮助,因为您没有向我们提供控制器和操作名称的详细信息,也未指定URL模式的含义 - 即哪些类别和方法(控制器和操作)您希望自定义路由解析为?

请记住,URL最终会调用一个特定类(Controller)中的方法(Action)。因此,在自定义路由中,您可以创建任何所需的URL模式,但是您必须了解路由必须根据URL模式指定要启动的Controller和Action。

如果以上信息对您来说是新闻,那么您应该了解MVC路由系统的工作原理(并且就此而言不起作用)。