2

コードを実行すると、response.write の前のスレッド プロセス !! それらを順番に作成する理由と方法は?

insertUser.ExecuteNonQuery()
con.Close()
Response.Write("Done successfully ...")
Thread.Sleep(4000)
Response.Redirect("Default.aspx")
4

3 に答える 3

1

応答は、Webアプリケーションでは1回限りのものです。「少し応答して、何か他のことをして、もう少し応答する」ことはできません。これは、応答のヘッダーResponse.Redirect()を変更するようなものを検討する場合に特に当てはまります。(基本的に、応答に追加したコンテンツを完全に「クローバー」して、ユーザーに表示されないようにします。)Response.Redirect()

ここでやろうとしていることは次のようになります。

  1. ユーザーにメッセージを表示します。
  2. 数秒待ちます。
  3. ユーザーを別のページに送ります。

これを実現するための標準的な方法がいくつかあります。クライアント側のコードでステップ2と3を実行するステップ1を含むページで応答するか、サーバー側のコードでステップ3を実行し、2番目のページでステップ1を実行する(場合によっては2つ、数秒後のメッセージ)。

たとえば、ページAにメッセージを表示し、数秒待ってからユーザーをページBに送信するとします。次に、ページAに次のようなメッセージを含めることができます。

<script type="text/javascript">
    $(function() {
        $('#dialog-message').dialog({
            modal: true,
            buttons: {
                Ok: function() {
                    $(this).dialog('close');
                }
            },
            close: function() {
                window.location.href='Default.aspx';
            }
        });
    });
</script>
<div id="dialog-message">Done successfully ...</div> 

jQueryを使用すると、目的のメッセージを含むダイアログ(jQuery UI Dialogを使用)がユーザーに表示され、ユーザーがダイアログを閉じるとリダイレクトが実行されます。

于 2012-12-19T14:20:03.383 に答える
0

Web Responseは、webrequestが完全に処理された後にのみページに表示されます。つまり、コードの実行後に応答を確認できます。したがって、コードは正しい順序で実行されます。以下に示すように、Response.End()メソッドを挿入してテストできます。

insertUser.ExecuteNonQuery()
con.Close()
Response.Write("Done successfully ...")
Response.End();
Thread.Sleep(4000)
Response.Redirect("Default.aspx")
于 2012-12-19T13:59:50.590 に答える
0

コードでクライアント側の機能を使用してそれを行うことができます。次のリンクを参照してください。

http://social.msdn.microsoft.com/Forums/da/sharepointdevelopmentprevious/thread/087c6b95-fe8d-48ea-85e6-b7fbcb777a5c

于 2012-12-19T13:53:18.820 に答える