もちろん、 form.load() を呼び出す必要はありません。私はそれをバイパスし、ScriptManager によって提供されるように、Web メソッドにリンクする AJAX 関数を呼び出して、ASMX Web メソッドを直接呼び出すだけです。MS AJAX はすべての JSON デコードを行い、「d」プロパティなどを除外します。
Web メソッドは、form.load() で要求されるように、'success' オブジェクトと 'data' オブジェクトを含むオブジェクトを返す必要さえありませんが、これは便利な形式であり、私はそれに固執しています。
Web メソッドによって返された「データ」オブジェクト (名前と値のペア、名前 == フィールド名) を使用して、ExtJs の form.setValues(data); を呼び出すことができます。フィールドに値を書き込みます。
これは、ExtJS のコードをバイパスするための完全に有効なケースです。
--
読み込みと同様に、送信も同様です。送信 Web メソッドによって返される必要があるオブジェクトの 'd' プロパティの問題を回避するには、[送信] ボタンのクリック イベントを処理し、Web メソッドを直接呼び出してデータをサーバーにプッシュします。Web メソッドは、ExtJ で必要とされるのと同じ形式でオブジェクトを返すことができます/返す必要があります。しかし、このオブジェクトを取得し、成功しなかった場合は自分で form.markInvalid() を呼び出して、'errors' プロパティを渡します。簡単でうまく機能します。
繰り返しますが、ExtJs は 'd' プロパティをうまく処理できないため、これをバイパスして自分で処理することは完全に有効です。
--
私は、Web メソッドを呼び出すために ScriptManager が提供する関数をますます使用し、コードを呼び出す ExtJs の AJAX メソッドをバイパスする傾向があります。前者は使い方がはるかに簡単で、「d」プロパティについて知っており、シリアル化された DateTime オブジェクトの Microsoft の JSON 形式を逆シリアル化する方法も知っています。