2009-06-12 11 views
0

Search.aspx、Results.aspx、Login.aspxという3つのasp.netページがあります。 匿名ユーザーが検索できるようにするため、誰もがsearch.aspxを使用できます。このページには、ASP.NETページのリダイレクト/クロスポスト

Server.Transfer(Results.aspx) 

と表示され、結果が表示されます。ユーザーがログインしていないときは、結果ページにログインページへのリンクが表示されます。問題は次のとおりです。 ログイン後、自動的に結果ページにリダイレクトされるようにします。しかし、Login.aspxのPreviousPageプロパティは常にnullなので、私は成功しません。私は

Request.UrlReferrer.LocalPath 

を使用する場合、それはSearch.aspxへのリンクではなくResults.aspxです。 また、ユーザーが[結果]ページにいるとき、リンクをクリックして戻ることができるようにするにはどうすればよいですか?Search.aspx上のすべての検索入力条件(テキストボックスなど)はまだ存在します。結果を見たことがありますか?ユーザーを送り返すと、ユーザーの入力はすべて失われます。 通常のハイパーリンク、リンクボタン、および前のページのURLを取得する方法や入力データを保持する方法はまだ分かりません。

これは助けであればAJAXを使うことができますが、「純粋な」asp.netソリューションが望ましいでしょう。

答えて

1

Server.Transferの代わりにResponse.Redirect( "url")を使用してみてください。 Server.Transferを使用すると、クライアントのURLは検索ページのままになり、実際に結果にリダイレクトされません。

3

Server.Transferを実行すると、サーバーサイドのリダイレクトが行われます。クライアントは元のURLを引き続き参照します。検索条件を結果ページに投稿し、ローカルに保存し、ログインリンクを表示する必要があります。ログインしたら、結果ページにリダイレクトして検索基準を再調整し、結果を表示することができます。

+1

Response.Redirectは実際にブラウザにHTTP 302(?)メッセージを送信し、ブラウザに指定されたページを要求するように指示します。 Server.Transferは新しいページをレンダリングしてブラウザに送信します。ブラウザには新しいページのGETが発行されていないため、最初のページが表示されていると考えられます。そのため、URLはServer.Transferを使用してクライアントと同じままになります。 –

1

User.Identity.IsAuthenticatedを使用して、ユーザーがログインしているかどうかを確認し、それに基づいてログインボタンを表示/非表示にすることができます。

ページの値を保持するには、セッションに値を保存し、検索ページで検索し、存在する場合はコントロールに配置します。

+0

チップをありがとう。セッションを使用してすべての検索条件を保存し、想定よりも簡単に作業します。 – noisecoder

0

また、必要に応じてログイン後に戻ってくるURLをクエリ文字列に埋め込むこともできます。