0

我想为 mvc 注册多个路由,我需要的 Url 如下:

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]

我怎么能达到?

谢谢

4

1 回答 1

0

您可以通过使用RouteCollection (Route) 类中定义的MapRoute方法来实现这一点。

如果您打开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 模式触发的操作。

如果上述信息对您来说是新闻,那么您最好阅读 MVC 路由系统的工作原理(就此而言,它不起作用)。

于 2012-10-08T20:31:15.063 回答