【问题标题】:RedirectToRoute doesn't go to controllerRedirectToRoute 不去控制器
【发布时间】:2020-02-13 08:40:35
【问题描述】:

我在我的 API 控制器中使用 RedirectToRoute 来重定向到 MVC 控制器。除了这个,我找不到好的解决方案:

return RedirectToRoute("Cv", new { action = "Cv/OpenCv" });

之前我在下面尝试过,但没有成功。

return RedirectToRoute("Cv", new { controller="Cv", action = "OpenCv" });

【问题讨论】:

  • 我还有一个名为 Cv 的路由名称。 :) 。 RedirectToAction 在 API 控制器中不可用。
  • 我看到了这个解决方案:)。它比我在第一个区块中使用的更好吗?谢谢你的努力!
  • Api 和 MVC 控制器使用不同的路由。 Api 控制器中的 RedirectToRoute 返回“System.Web.Http.Results.RedirectToRouteResult”,但 Mvc 控制器中的 RedirectToRoute 返回“System.Web.Mvc.RedirectToRouteResult”。我认为在这种情况下您可以只使用“重定向”方法。只是想知道你为什么需要这个?
  • 您可以尝试创建一个Mvc UrlHelper (docs.microsoft.com/ru-ru/dotnet/api/…) 实例并使用RouteUrl 方法从路由参数构建一个Url,然后调用Redirect 方法。

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


【解决方案1】:

Api 和 MVC 控制器使用不同的路由。 Api 控制器中的 RedirectToRoute 返回“System.Web.Http.Results.RedirectToRouteResult”,但 Mvc 控制器中的 RedirectToRoute 返回“System.Web.Mvc.RedirectToRouteResult”。我认为在这种情况下您可以只使用“重定向”方法。

您可以尝试创建一个 Mvc UrlHelper 实例并使用RouteUrl 方法从路由参数构建一个 Url,然后调用 Redirect 方法。

【讨论】:

    【解决方案2】:

    您可以借助以下代码从 API 控制器重定向到 MVC 控制器。 请在下面找到上述问题的代码。

    public IHttpActionResult Index()
    {
        var newUrl = this.Url.Link("Default", new
        {
            Controller = "Account",
            Action = "Register"
        });
        return Redirect(new Uri(newUrl.ToString(), UriKind.RelativeOrAbsolute));
    }
    

    或直接从 API Controller 调用

    public IHttpActionResult Index()
    {
       return Redirect(new Uri("/Account/Register", UriKind.RelativeOrAbsolute));
    }
    

    请使用上面的代码告诉我

    【讨论】:

      猜你喜欢
      • 2014-05-03
      • 1970-01-01
      • 1970-01-01
      • 2019-08-27
      • 2013-07-31
      • 2018-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多