2

条件に基づいて、URLに含まれていたクエリ文字列とロケーションハッシュを処理しながら、別のコントローラーとアクションにリダイレクトするにはどうすればよいですか。これを行うための組み込みの方法はありますか?

4

2 に答える 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 に答える