1

asp.net 3.5(codebehind c#)を使用しています。私のユーザーはIE7または8を実行しています。いくつかのTextBoxesを含むデータ入力ページがあります。

すべてのesをクリアしたい場合TextBoxは、sever.transferを実行して同じページに戻ります。

TextBoxたぶん99%の確率で、これはesをクリアします。時々そうではありません。

サーバーへのラウンドトリップが発生した理由は次のとおりです。

  • ページのドロップダウンリストとラジオボタンリストがリセットされ、
  • DBに保存されたレコードによって示されるように、DB処理が発生しました。

矛盾は私を混乱させています。

esがこのようにデータを永続化する原因は何でしょうか。また、データが発生しTextBoxないようにするにはどうすればよいですか。

その結果、ユーザーは同じデータを2回保存することになります。

これはそれとは何の関係もないと思いますが、検証用のページには、入力の最初の文字を大文字にするなどのさまざまなjs関数もあります。

4

1 に答える 1

2

このMSDNの記事ではServer.Transferメソッドについて説明しているため、これはおそらくTextBoxesを空にする正しい方法ではありません。このメソッドは、すべての状態情報を明示的に保持します。

より良いアプローチはこの答えの中で説明されています:

foreach (var item in Page.Controls)
        {
            if (item is TextBox)
            {
                ((TextBox)item).Text = "";
            }
        }

ラウンドトリップを1つだけに保ち、必要に応じて、他のすべてのユーザー入力をそのままにしておくことができます。

于 2013-02-13T08:05:30.407 に答える