我有以下格式的URL请求: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处理以下格式的URL? http://localhost/activate?activationCode=X

...以便添加一个特殊情况,其中activate主机名前移到Home控制器,然后执行Activate动作?

最佳答案

您需要创建特定的路线

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)

关于c# - 将根请求路由到此 Controller 并在MVC中执行操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37890974/

10-09 03:10