0

マルチビューを使用するページがあります。各ビューには、個別のユーザーコントロールが含まれています。これらのユーザーコントロールの1つには、マルチビューに別のビューをロードするための画像ボタン付きのリストビューがあります。この時点まではすべて問題ありません。ユーザーが戻るボタンを押すと、リストビューを含むユーザーコントロールに戻ります。次に、ユーザーは別の画像ボタンをクリックして別のデータを表示し、以前と同じデータを使用して詳細なユーザーコントロールに戻ります。デバッグ中に、戻るボタンを押してもitemコマンドイベントが発生しないことを確認しました。

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

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

キャッシュ可能性をキャッシュなしに設定してみました。これにより、「ページの有効期限が切れました」というメッセージが表示され、ユーザーはページを更新する必要があります。これはユーザーにとって醜いものであり、ユーザーエクスペリエンスを確実に奪います。

itemコマンドイベントが再び正しく発生するように、ユーザーがクリックしてページをリロードするための最もクリーンな方法を探しています。

4

2 に答える 2

0

その理由は、戻るはページのライフサイクルに影響を与えないためです。これは間違いなく、ページがキャッシュされ、キャッシュされたページがサーバー上で実行されないためです。このコードを試して、この問題を取り除くことができます。

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

于 2012-04-04T16:56:10.817 に答える
0

この答えを見つけるには多くの研究が必要だったので、他の人がこの質問に出くわして私の答えを見つけてくれることを願っています。私は実際にこれを見つけることができたことに驚きました。わかりました、十分な栄光です。

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

DotNetSlackers.comのDinoEspositoのこれらの記事を参照として使用しました。サーバー側の履歴管理クライアント側の履歴管理

于 2012-04-05T16:05:44.030 に答える