Как определить маршрут, который принимает только слаг и идентификатор? - PullRequest
1 голос
/ 16 ноября 2011

Какой маршрут мне нужен, чтобы перехватывать URL-адреса, например mydowmain.com/slug/id, например:

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

Как я могу сделать это в asp.net mvc3?

Ответы [ 2 ]

2 голосов
/ 16 ноября 2011

Вам необходимо вызвать метод 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 контроллер (очевидно, укажите, какой контроллер вы хотите отобразить на этом маршруте), и нужное вам действие, а также необязательный id (если вы хотите, чтобы он был необязательным, конечно).

1 голос
/ 16 ноября 2011

Вот как у меня это работало

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 = "" });
...