根据条件,如何在转移任何查询字符串和URL中的位置哈希时,重定向到另一个控制器和操作。是否有内置的方法来做到这一点?
答案 0 :(得分:3)
在执行HTTP请求时,浏览器永远不会将哈希部分发送到服务器。因此,您无法重定向并保留哈希,因为您不知道哈希值,它从未到达服务器。一些技术包括在调用应该执行重定向的控制器动作之前使用javascript并以这样的方式操纵url,以便例如作为查询字符串参数发送散列部分。因此,一旦您调用此控制器操作,您将能够使用GenerateUrl方法生成带有哈希的网址:
public ActionResult Blah(string hash)
{
... do something
// Generate the url to redirect to using a hash
var url = UrlHelper.GenerateUrl(
null, // routeName
"Foo", // actionName
"Bar", // controllerName
null, // protocol
null, // hostName
hash, // fragment
null, // routeValues
RouteTable.Routes, // routeCollection
ControllerContext.RequestContext, // requestContext
false // includeImplicitMvcValues
);
return Redirect(url);
}
答案 1 :(得分:0)
有RedirectToAction方法,但它会为客户端生成302,这意味着请求会发生变化(这不是你想要的)。
请查看How to simulate Server.Transfer in ASP.NET MVC?提供的解决方案,我相信它可能对您有所帮助,尽管它不是内置的。
此致