RedirectToAction作为获取请求格式

时间:2017-02-08 17:36:54

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

我有一个动作结果,我想重定向到动态ID的动作。

  return RedirectToAction("Engine", new {id = latestVersion.Id});

但是,返回的URL最终为:

domain.com/project/engine/xxx
然而,我需要的是:

domain.com/project/engine?id=xxx

以下是我目前的maproutes:

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

    routes.MapRoute(
        "PrevSession", // Route name
        "{controller}/{action}/{id}/{id2}", // URL with parameters
        new { controller = "Home", action = "Index", id = UrlParameter.Optional, id2 = UrlParameter.Optional } // Parameter defaults
    );

有没有办法改变在控制器级别格式化的方式?

2 个答案:

答案 0 :(得分:1)

选项1。

您可以将id路线参数更改为其他名称,例如

routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{myId}", // URL with parameters
            new { controller = "Home", action = "Index", myId = UrlParameter.Optional } // Parameter defaults
        );

并在控制器(使用它们)中进行相应更改,或

选项2。

您可以添加不带id参数的虚拟路径定义,例如

routes.MapRoute(
                "RouteWithoutId", // Route name
                "{controller}/{action}" 
            );

并使用RedirectToRoute方法,例如,

return RedirectToRoute("RouteWithoutId", new { action = "Engine", id = latestVersion.Id});

希望这会有所帮助。

答案 1 :(得分:0)

简单回答

     routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}", // URL with parameters
            new { controller = "Home", action = "Index" } // Parameter defaults
        );