基于条件,我如何重定向到另一个控制器和操作,同时携带任何查询字符串和 URL 中的位置哈希。有没有内置的方法来做到这一点?
问问题
3536 次
2 回答
3
浏览器在执行 HTTP 请求时从不将哈希部分发送到服务器。因此,您无法重定向并保留哈希,因为您不知道哈希,它从未到达服务器。一些技术包括在调用控制器操作之前使用 javascript,该控制器操作应该执行重定向并以这样的方式操作 url,以便将哈希部分作为查询字符串参数发送。因此,一旦您调用此控制器操作,您将能够使用GenerateUrl方法生成带有哈希的 url :
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);
}
于 2012-07-09T06:02:31.717 回答
0
有 RedirectToAction 方法,但它会向客户端生成 302,这意味着请求会更改(这不是您想要的)。
请看一下如何在 ASP.NET MVC 中模拟 Server.Transfer?,我相信它可以帮助你,虽然它不是内置的。
问候
于 2012-07-09T01:26:51.190 回答