2012-02-23 1 views
1

私は基本的なフォームにいくつかのASP.NETテキストボックスフィールドをレイアウトしています。別のテキストボックスにイベントが発生すると、特定のテキストボックスの値を空白に設定します。以前のJavascriptイベントでその値が取り除かれたときに私のASP.NETテキストフィールドがポストバックに値を保持する理由

フォームには、パブリックプロパティを公開してTextBoxの値を取得するユーザーコントロールがあります。フォームが送信され、プロパティにアクセスすると、ページがロードされたときの元の値が空白またはヌル値の代わりに戻ってきます。誰かがなぜこれが起こっているのかを私に説明することはできますか?

コントロールがあるページがあります。そのコントロールにはテキストボックスとテキストボックスの値を公開するプロパティがあります。クライアントイベントの後、入力されたテキストボックスはブランクに設定されます。フォームを送信すると(送信ボタンがコントロール上にありますが、イベントが公開されて親フォームに表示されます)、コントロールのプロパティにアクセスしようとしますが、元の値が含まれています。

これは状態バッグとは関係がありますが、わかりません。

助けがあれば助かります。

ありがとうございます。

答えて

0

ajax/jqueryまたは何らかのクライアント側を使用して値を変更すると、新しい値はViewStateと対話しません。したがって、ページがリロードされると、元の値がViewStateから復元され、ajax経由で発生したものがすべて消去されます。

これは、asp.netポストバックモデルの障害/機能です。私はMVCフレームワークが普及したのはその理由だと考えています。ポストバックやビューステートはまったくないので、AJAXではもっとうまくいきます。

私はAJAXをポストバックで動作させていますが、それは痛みです。私は、次の

  1. は、我々は隠しフィールドの変更を保存し、各クライアントの変更のために、クライアントの状態
  2. を保存するために使用することで隠しフィールドを持っていました。変更は複雑になるため、JSONの変更をコード化してください。たとえば、値とClientIDのペアを持つ文字列です。
  3. 隠しフィールドから状態を読み取るために、javascript関数でページポストバックフックするとき。 JSONをオブジェクトに解析し、カスタムコードを使用してフィールド値をリセットします。

これは私が行ったことです。これは良い答え/回避策かもしれません。要するに

- ポストバックは、私はあなたがサーバー側で無効に設定変更するあなたのテキストボックスを持っているかもしれないと思うAJAX

+1

これは完全に正しいとは言えません。更新パネルを使用すると状態は変わりません。 – Paddy

+1

良い点 - 私はJQueryやXMLHttpRequestオブジェクトを介して一般的にAJAXを仲介しています。更新パネルはポストバックでうまくいくでしょう。 TBH私はそれらがAJAXだとは思っていません。そして私はそれらをよく虐待しているのをよく見てきました。私は時々彼らを考えることを好まないのです。 –

+0

AJAXコールバックの値を持つテキストフィールドを設定する方法は、フィードバックをお寄せいただきありがとうございます。 – Paddy

0

を破壊します。この場合、値はサーバーにポストバックされません。

0

ビューステートから再びその負荷だって... JavaScriptからテキストボックスの値をクリアするには、そのことはできませんねえ...

私はそれはあなたを助けることがよく分からないが、この

EnableViewState = false 

を試してみてください。

関連する問題