Asp.net MVC 4 RedirectToAction - prepend domain



我需要为RedirectToAction中执行的重定向预先准备一个域,所以它不是相对的,而是绝对的url。如何才能做到这一点?

编辑:我将添加更多信息:这是一个允许客户端设置代理域的多租户应用程序。所以我需要所有的url通过代理。因此,一个actionredirect将是:http://domainX.com/Question/Preview/640328需要经历http://domainY.com/SUBDOMAIN/Question/Preview/640328

这不能单独使用RedirectToAction来完成。但是,UrlHelper.RouteUrl方法可用于使用特定主机名生成绝对URL。

您只需要使用UrlHelper.RouteUrl生成URL,然后使用redirect方法执行重定向。

如果您知道路线名称,请使用以下内容:

var routeValues = new RouteValueDictionary(new { id = 12345 });
string url = Url.RouteUrl("Products.Show", routeValues, "http", "www.domainname1.com");
return Redirect(url);

如果您想根据控制器名称和操作生成URL,请使用以下内容:

var routeValues = new RouteValueDictionary(
    new { controller = "Products", action = "Show", id = 12345 });
string url = Url.RouteUrl(null, routeValues), "http", "www.domainname1.com");
return Redirect(url);

以上任何一个都会重定向到一个绝对的URL,比如http://www.domainname1.com/products/12345

请注意,UrlHelper的实例可通过内置的controller.Url属性在控制器代码中使用(。

根据定义,重定向到操作必须将您带到某个控制器中的操作。如果你想重定向到另一个url,请尝试:

return Redirect("http://www.stackoverflow.com");

最新更新