2016-06-17 4 views
1

У меня есть запрос URL в следующем формате: http://localhost/activate?activationCode=Xмаршрутизации запроса корень этого контроллера и действия в MVC

Я хотел бы этот запрос будет обрабатываться в контроллере Home, по Activate действия.

Я не уверен, как действовать. Я посмотрел на RouteConfig.cs и посмотреть, как маршруты определены здесь:

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

Но как я могу сделать Home/Activate ручка URL, следующий формат? http://localhost/activate?activationCode=X

... так, чтобы добавить специальный случай, когда activate идет имя хоста переходит к контроллеру Home и Activate действия?

ответ

3

Вам нужно создать конкретный маршрут

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

и поместить этот перед маршрут по умолчанию.

Кроме того, если вы хотите http://localhost/activate/X, а не http://localhost/activate?activationCode=X, а затем изменить его

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

и сделать метод в HomeController

public ActionResult Activate(string activationCode)