我需要为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");