Asp.net MVC 4 RedirectToAction - 前置域

时间:2014-04-29 11:56:50

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

我需要在RedirectToAction中执行重定向前置域,因此它不是相对的,而是绝对的URL。如何实现这一目标?

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

2 个答案:

答案 0 :(得分:2)

使用RedirectToAction无法完成此操作。但是,UrlHelper.RouteUrl method可用于使用特定主机名生成绝对URL。

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

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

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);

上述任何一种都会重定向到http://www.domainname1.com/products/12345

这样的绝对网址

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

答案 1 :(得分:0)

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

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