ASP.NET MVCでServer.Transferをシミュレートする方法は?
ASP.NET MVCでは、リダイレクトActionResultを非常に簡単に返すことができます。 return RedirectToAction("Index"); or return RedirectToRoute(new { controller = "home", version = Math.Random() * 10 }); これは実際には通常は問題ないHTTPリダイレクトを提供します。ただし、Googleアナリティクスを使用すると、元のリファラーが失われ、Googleがどこから来たのかわからなくなるため、大きな問題が発生します。これにより、検索エンジンの用語などの有用な情報が失われます。 ちなみに、この方法には、キャンペーンから取得された可能性のあるパラメーターを削除できるという利点がありますが、サーバー側でそれらをキャプチャすることができます。クエリ文字列にそれらを残すと、ブックマークやTwitterやブログにリンクしてはいけないリンクが表示されます。キャンペーンIDを含む私たちのサイトへのリンクがTwitterで人々に送られているのを何度か見たことがあります。 とにかく、私は別の場所や別のバージョンにリダイレクトする可能性があるサイトへのすべての着信訪問のための「ゲートウェイ」コントローラーを書いています。 今のところ、私は(偶然のブックマークよりも)今のところGoogleのことをもっと気にかけており、にアクセス/した場合に表示されるページにアクセスしたユーザー/home/7に、ホームページのバージョン7 を送信できるようにしたいと考えています。 前に言ったように、これを行うと、Googleがリファラーを分析できなくなります。 return RedirectToAction(new { controller = "home", version = 7 }); 私が本当に欲しいのは return ServerTransferAction(new { controller = "home", version = 7 }); これにより、クライアント側のリダイレクトなしでそのビューが表示されます。そんなことあるとは思いませんが。 現在私が思いつくことができる最良のことはHomeController.Index(..)、私のGatewayController.Indexアクションでコントローラロジック全体を複製することです。つまり、アクセスしやすいように移動'Views/Home'する'Shared'必要がありました。もっと良い方法があるに違いない?? ..