2012-04-04 18 views
0

多視点を使用するページがあります。各ビューには個別のユーザーコントロールが含まれています。これらのユーザーコントロールの1つに、マルチビュー内の別のビューの読み込みを引き起こす画像ボタン付きのリストビューがあります。この時点まではすべてが罰金です。ユーザーが戻るボタンを押すと、リストビューを含むユーザーコントロールに戻ります。その後、ユーザーは別の画像ボタンをクリックして異なるデータを表示し、以前と同じデータを使用して詳細ユーザーコントロールに戻ります。デバッグ中に、アイテムコマンドイベントが戻るボタンを押した後に起動しないことがわかりました。listview itemコマンドは、戻るボタンの後に起動しません。

私はマルチビューを置き換えて、各ユーザーコントロールを別々のパネルに入れてみました。これは結果をまったく変えなかった。

ページが読み込まれてから5秒後に有効期限が切れるCookieを設定しようとしました。ユーザーが次のページに進み、クリックして戻ると、5秒以上経過すると、フォームを強制的に再度送信します。これにより、ページをリロードするのではなく、次のコントロールが再度ロードされます。

キャッシングをキャッシュなしに設定しようとしました。これにより、「ページが切れました」というメッセージが表示され、ユーザーはページを更新する必要があります。これはユーザーにとっては醜いものであり、ユーザーエクスペリエンスをはるかに上回ります。

ユーザーがクリックしてページを再読み込みして、アイテムコマンドイベントが正しく再開されるように、最もクリーンな方法を探しています。

答えて

0

この回答を見つけるには多くの研究が必要でしたので、他の人がこの質問にうかがい、私の答えを見つけてください。私は実際にこれを見つけることができたことに驚いた。さて、十分な憂鬱です。

ユーザーが戻るボタンをクリックしたときにページがポストバックされないため、イベントが正常に発生せず、次のページで問題が発生します。何が起こらなければならないのは、ブラウザのナビゲーションボタン(つまり、前と後)を処理できる必要があるということです。これを行うには、スクリプトマネージャ内でEnableHistoryをtrueに設定し、スクリプトマネージャからNavigateイベントを処理する必要があります。その後、状態オブジェクトに保存した情報を使用してコントロールをリロードすることができます。

DotNetSlackers.comのDino Espositoの記事を参考にしました。 Server Side History ManagementClient Side History Management

0

なぜなら、Backはページライフサイクルに影響しないからです。ページがキャッシュされ、キャッシュされたページがサーバー上で実行されないため、間違いなくです。このコードを試してこの問題を解決することができます。

Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();

+0

私はこれを試しましたが、これはページをリロードする代わりにページをリロードすることを強制します。このプロセスはシームレスに行う必要があります。ユーザーは中断しないでください。彼らがしなければならないことは、ヒットし、何もせずにページをリロードすることだけです。 – fizch

関連する問題