1

ユーザーが入力する ASP.NET Web フォーム (C#) があり、ポストバックを引き起こすいくつかのドロップダウン リストと、ポストバックを引き起こすいくつかの検証があります。また、いくつかの異なる更新パネルを使用しています。1 つのパネルはユーザー入力用に表示され、もう 1 つのパネルは、ユーザーが送信をクリックしてデータがデータベースに追加された後に表示されます。確認パネル (最後のパネル) には、確認番号も表示されます。

最後のパネルが表示された後、ユーザーが F5 キーを押すか更新したときにページが再読み込みされないようにしたいと考えています。その理由は、ユーザーが誤って更新または F5 をクリックして、確認番号とメッセージを失ってほしくないからです。ユーザーが F5 キーを押すと、ブラウザーはそれを新しいページの読み込みが必要であると解釈し、その時点でセッションはクリアされます (以下のコードに示すように)。

私が最初に考えたのは、メッセージと確認番号を再印刷し、それを保持するパネルが常に見えるようにすることでした。以下のコードのelseセクションでこれを行うつもりでしたが、複数のポストバックがあり、それらはすべてページの読み込みをトリガーするため、ポストバックがフォームの結果であるかどうかを判断する方法がない限り、機能しません要素または f5 キー。

protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            if (!IsPostBack)
            {
                Session.Clear();
                GetList();
            }
        }
        catch (Exception ex)
        {
            //Do something();
        }
    }

Javascriptの使用を推奨するいくつかの異なる投稿を見てきましたが、可能であれば、誰かがJavaScriptをオフにしている可能性が低いため、それを避けています.

プログラムの流れは次のとおりです。ユーザーはフォームを開き、contactpanel のフィールドに入力し、送信をクリックします。フィールドは ASP.NET サーバーの検証コントロールを使用して検証され、すべて問題がなければ、データがデータベースに送信され、確認番号が返されます。最後に、contactpanel は visibility=false に設定され、confirmationpanel は visibility=true に設定されます。

お役に立てれば。提案をお待ちしております。

ありがとう、

4

1 に答える 1

2

最終画面 (確認) にあるコンテンツをまったく新しいページに移動します。その確認に到達するために保存されるデータはすべて、何らかのタイプのデータ ストレージ (データベースなど) に保存する必要があります。次に、訪問者がその情報を取得するために必要な ID または変数はすべて、セッション変数に保存する必要があります。このようにして、ユーザーがページを更新しても、意図したとおりにコンテンツが表示されます。とにかく、当時はすべてのフォームを行う必要がありました。

例えば:

~/form_page.aspx
- User lands
- Fills in information
- Post backs save data as the user progresses
- Save all data collected to a resource such as a database
- Save an ID to access that information to a Session variable
- Redirect user to...

~/form_thankyou.aspx
- On load, get the Session variable needed to pull the information
- Retrieve information from the resource
- Display results to user

(これは実際のコードではありません。フォーマットに問題があっただけです。)

この手法を使用すると、SEO/メトリクス チームがコンバージョンを追跡しやすくなります (他にも方法はたくさんありますが)。

于 2012-10-03T01:36:19.950 に答える