これは奇妙な質問のように思えるかもしれませんが、私はそれが可能であるべきだと本当に思っています。
ここでは、私が達成しようとしていることをより明確に理解していただけるように、私が提示したい背景全体を示します。
プロジェクトで使用するフレームワーク dll ライブラリがあります。ライブラリ内に、冗長な js に必要なすべての機能の API を含む javascript オブジェクト (bjobj) を作成する .js ファイル (b.js と呼びましょう) を埋め込みました。
クラス ライブラリには、system.web.ui.page クラスを拡張し、追加機能を提供するクラス (bpage と呼びましょう) も含まれています。
bpage 内で、ディクショナリをラップするプロパティを作成し、bpage を拡張するページが構造体、null 許容構造体、および文字列をディクショナリに追加できるようにしました。
ディクショナリに値が追加されると、開発者は bjobj オブジェクトを介して API メソッドを介して JavaScript の値にアクセスできるようになります。
私の bpage は json 文字列を作成し、clientscript.register... メソッドを使用して bjobj に送信します。
隠し変数は使用されず、json 文字列は解析中にブラウザーによって json オブジェクトとして自動的に認識されます。
これを行うと、ページで隠し変数を使用する必要がなくなります。
この手法全体の 1 つの大きな欠点は、すべてがフレームワーク dll から発生するため、ブラウザーで変数に加えられた変更をサーバーで取得できないことです。
bpage を拡張するページで変更を行う必要がないメカニズムが必要になりましたが、フレームワークの cs コードと js コードから、json オブジェクトで行われた変更をサーバーに自動的に戻すことができました。
意図した機能を実現するには、現在 2 つの機能が必要なようです。
まず、私の bjobj は、ポストバックの開始前に json オブジェクトを文字列化できるように、ポストバック イベントを自動的にキャプチャできる必要があります。
次に、文字列化された json を隠しフィールドを使用せずにサーバーに送り返すメカニズムが必要です。これにより、私の bpage は文字列をキャプチャして逆シリアル化できます。
私が試しているテクニックについての洞察を提供してください。私の目的は、私のコードベースがよりきれいに見え、開発速度が向上することを確認することです.