0

Asp.net.aspxページがあります。たとえば、簡単なお問い合わせページを取り上げています。このページには、名前/メール/質問の3つのフィールドがあります。シナリオは、ユーザーが間違った電子メールアドレスを入力した場合、それに応じて、システムは正規表現にチェックすることでエラーメッセージを表示します。

これで、ユーザーがブラウザのボタンまたはバックスペースキーを押すと、ブラウザはエラーメッセージなしで同じページを表示します。これは1ステップ遅れることを意味します。

ユーザーが2つの同時ミスを行った場合-1)名前ボックスを空のままにして[送信]をクリックします(エラーメッセージが表示され、すべてのフィールドが必須であることが示されます)。2)間違った電子メール、[送信]をクリックします(エラーメッセージには間違った電子メールが入力されたことが表示されます)

これで、ユーザーがブラウザのボタンまたはバックスペースキーを押すと、ブラウザは同じページに前のエラーメッセージ(空のボックスの場合)、つまり1ステップ遅れて表示されます。再びヒットバックし、エラーメッセージなしで同じページを表示します。つまり、2ステップ遅れます。

戻るボタンやバックスペースにこれらの不要なアクションを実行させたくありません。また、戻るボタンを無効にしたり、何もキャッシュしたりしたくありません。

私が必要としているのは、ユーザーが戻るボタンまたはバックスペースを押すと、同じページではなく、以前に閲覧した別のページに移動する必要があるということです。つまり、複数のポストバック中にブラウザのキャッシュにページを保持させたくないということです。むしろ、キャッシュは最初に着地したときに一度だけページを保持する必要があります。

このアプローチがsmartnavigationと呼ばれることを時々聞いたので、グーグルを試してみましたが、非常に便利で最適化されたものを見つけることができませんでした。これは私が今までに見つけた最高の記事でした(これが私が探しているものかどうかはわかりません)。 http://support.microsoft.com/kb/913721

問題は、この問題を正確に参照する方法が完全にはわからないことです。

私の質問がかなり単純であることを願っています(私は明確にしようとしました)。不明な点がありましたらお知らせください。

どんな助けでも大歓迎です。

前もって感謝します。

4

2 に答える 2

2

UpdateModeをAlwaysに設定して、コントロールをUpdatePanel内に配置できると思います。

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always">
    <ContentTemplate>
        // Your controls
    </ContentTemplate>
</asp:UpdatePanel>

また、ページのフォーム要素内にScriptManagerが必要です。

<form id="form1" runat="server">
    <asp:ScriptManager runat="server" EnablePartialRendering="true" />
....
</form>

これにより、ページが完全なポストバックを実行しなくなり、説明した動作が停止します。また、RegularExpressionValidatorやRequiredFieldValidatorなどでクライアント側の検証を使用します。

于 2012-10-02T11:01:33.620 に答える
0

これが別の解決策です。「head」タグの上に<%Response.CacheControl = "no-cache";%>を追加してみてください

于 2013-07-01T02:10:09.667 に答える