条件に基づいて、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 に答える