将根请求路由到此控制器并在MVC中执行操作

时间:2016-06-17 22:00:27

标签: c# asp.net .net asp.net-mvc

我有以下格式的网址请求:http://localhost/activate?activationCode=X

我希望通过Home操作在Activate控制器中处理此请求。

我不知道该怎么办。我查看了RouteConfig.cs并查看了此处定义路线的方式:

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

但是如何让Home/Activate处理以下格式的网址? http://localhost/activate?activationCode=X

...以便添加一个特殊情况,activate继续将主机名转到Home控制器,Activate操作?

1 个答案:

答案 0 :(得分:4)

您需要创建特定路线

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)