0

誰かが ref のクエリ文字列キー (mysite.com/AboutUs?ref=Test など) を使用して当社の Web サイトにアクセスした場合、今後のすべてのリンク/フォーム投稿でそのクエリ文字列を維持することは可能ですか?

たとえば、私たちのウェブサイトに mysite.com/Products にアクセスするためのリンクがあるとします。これを mysite.com/Products?ref=Test に翻訳したいと思います。

理想的には、以前の URL を検査し、ページのリクエストが行われたときにそれを現在の URL に追加することによって、おそらくルートをインターセプトしてキーを追加することによって、これが可能かどうかを知りたいです (まだ存在しない場合)。 .

プロジェクトは MVC 4 アプリケーションです。

4

2 に答える 2

4

実際には、すべての URL に追加することでそれを渡すことができますが、その場合はHtml.ActionLinkなどを使用するたびに手動で追加する必要があります (または、カスタム HTML ヘルパーを作成してそれを行うことができると思いますが、作業するすべての開発者プロジェクトでは常にカスタムヘルパーを使用することを覚えておく必要があります)、およびコントローラーアクションのすべてのリダイレクトなど。長くても短くても、これは非常に時間がかかり、非常に壊れやすいものです。

最善の策は、クエリ文字列パラメーターを使用して最初の要求をインターセプトし、セッション変数を設定することです。次に、クエリ文字列パラメーターの代わりにセッション変数の存在を簡単に確認できます。

このすべてのロジックを処理するには、グローバル アクション フィルターを作成するのが最善の策です。MSDN には、フィルターに関するかなり広範なドキュメントがあります。フィルターを作成したら、それを FilterConfig.cs (App_Start 内) に登録してグローバルにします。

于 2013-04-10T12:48:07.057 に答える