これが非現実的であるように思われることは承知していますが、緊急の最終段階のビジネス要件を満たすためにこの WebForms ページをどのように再設計しているのかという理由から、私はこの方法で行うことを本当に好みます。
カスタムユーザーコントロールがあります。onclick
このユーザーコントロールには、さまざまなコントロールとonchange
イベントに接続された関数を含む Javascript ブロックがあります。以前は、コントロールの.Visible
プロパティはTrue
だったので、その HTML と Javascript はページにレンダリングされていました。
ここで、コントロールの.Visible
プロパティをに設定false
し、UpdatePanel をラップする必要があります。これを行うと、最初のページの読み込み中にコントロールの HTML がレンダリングされなくなります。コントロールの内容を表示するには、ユーザーはボタンをクリックして、コントロールの.Visible
プロパティを に設定するサーバー側のメソッドを実行する必要がありますtrue
。現在は UpdatePanel にあるため、コントロールは一種の Ajaxy の方法でページに表示されます。onclick
ただし、コントロールにある Javascript にアクセスできないようです。onchange
関連する Javascript 関数がundefined
.
簡潔にするために複雑すぎて説明できない理由で、私が利用したくないソリューション:
- JSON/AJAX (この短い時間にあまりにも多くの再構築が必要)
- CSS display:none/visibility:visible (再構築を最小限に抑えるために、サーバー側の機能を可能な限り保持する必要があります)
- Javascript を親ページまたは .js ファイルに配置します (これは最後の手段と考えますが、を使用してサーバー コントロールを参照します
<#%=ControlId.ClientID %>
。Javascript が UserControl 内に含まれておらず、そうしたくない場合は、これを行うことはできません。コントロールをClientIdMode
に設定しますstatic
。)
.Visible
UpdatePanel が UpdatePanel を使用してコントロールのプロパティを に設定したときに、クライアントがアクセスできるように、UserControl に Javascript を保持する方法を見つけたいと思っていますtrue
。