如何定义只接受slug和id的路由?

时间:2011-11-16 03:37:24

标签: asp.net asp.net-mvc asp.net-mvc-3 web-applications

我需要什么样的路线才能抓住像mydowmain.com/slug/id这样的网址:

http://mydomain.com/dont-ask-what-you-can-do-for-stackoverflow/12

如何在asp.net mvc3中执行此操作?

2 个答案:

答案 0 :(得分:2)

您需要在RouteCollection.MapRoute()文件的Application_Start()方法中调用global.asax.cs方法。

routes.MapRoute(
                "Slug", // Route name
                "{action}/{id}", // URL with parameters
                new { controller = "YourControllerToCall", action = "YourAction", id = UrlParameter.Optional } // Parameter defaults
            );

此代码将注册您想要的路线,并将其映射到YourControllerToCall控制器(显然将您希望映射到此路线的控制器放在那里),以及您需要的操作,以及可选的{{ 1}}(如果你想要它是可选的,当然)。

答案 1 :(得分:1)

这就是我的工作方式

Routes.MapRoute("ViewArticle", "{slug}/{id}",
                new { controller = "articles", action = "view", id = "", slug = "" },
                new { id = @"\d+" });

Routes.MapRoute("Default", "{controller}/{action}/{id}",
                 new { controller = "home", action = "index", id = "" });