【问题标题】:ASP MVC ReidrectToRoute without query string没有查询字符串的 ASP MVC ReidrectToRoute
【发布时间】:2015-09-03 13:08:29
【问题描述】:

我在Controller中使用这段代码RedirectToRoute

return RedirectToRoute(new
            {
                controller = "Posts",
                action = "Post",
                parametr1 = "11",
                parametr2 = "aaaaaaaa"
            });

url 输出是这样的:

https://localhost:45303/Posts/Post?parametr1=11&parametr2=aaaaaa

但我希望 url 输出没有这样的查询字符串:

https://localhost:45303/Posts/Post/1/aaaaaa

这是我的路线:

  routes.MapRoute(
           name: "Default1",
           url: "{controller}/{action}/{parametr1}/{parametr2}/{parametr3}",
           defaults: new { controller = "Home", action = "Index", parametr1 = UrlParameter.Optional, parametr2 = UrlParameter.Optional, parametr3 = UrlParameter.Optional }
       );

如何做到这一点? 我使用RedirectToRouteRedirectToAction 但结果是一样的。

【问题讨论】:

  • 你需要在你的RouteConfig.cs文件中定义一个路由-url: {controller}/{action}/{parametr1}/{parametr2}
  • 你不能有 3 个UrlParameter.Optional - 只有最后一个可以是可选的。从前 2 中删除 UrlParameter.Optional

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


【解决方案1】:

将此重载用于RedirectToRoute 并提供正确的路由名称:

return RedirectToRoute("Default1", new
        {
            controller = "Posts",
            action = "Post",
            parametr1 = "11",
            parametr2 = "aaaaaaaa"
        });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-01
    • 1970-01-01
    • 2012-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多