ASP.NET カスタム コントロールと「動的」イベント モデル
-
09-06-2019 - |
質問
タイトルが完全に正しいかどうかはわかりませんが、ご提案をお待ちしております。
私は ASP.NET カスタム コントロールを作成中ですが、これは私にとってまだ比較的新しいことなので、ご容赦ください。
イベントモデルを考え中です。Web コントロールを使用していないため、ボタンからイベントが発生することはなく、手動で呼び出しています。 __doPostBack 適切な引数を使用して。ただし、これは明らかに、オプションを選択するときなどに大量のポストバックが発生することを意味する可能性があります (選択するとレンダリングが異なります)。
やがて、これをより Ajax っぽく、応答性の高いものにする必要があるため、ローカル Javascript を呼び出すようにイベント バインディングを変更する必要があります。
そこで、コントロールの「モード」を切り替えられるべきだと考えていました。コントロールはポストバックとハンドル自体を使用するか、doPostBack の代わりに呼び出す Javascript 関数名を指定できます。
- これについてはどう思いますか?
- コントロールからイベントを発生させるアプローチが間違っているのでしょうか?(ここでは提案を歓迎します!)
- 同様の問題にどのように対処しますか?
編集 - 明確にするため
- カスタムのレンダリングされたコントロールを作成しています(つまり、WebControl から継承します)。
- レンダリングされた出力を完全に制御したいため、既存の Web コントロールは使用しません。
- 私の知る限り、レンダリングされたカスタム コントロールからサーバー側イベントを発生させる唯一の方法は、レンダリングされた要素から doPostBack を呼び出すことです (間違っている場合は修正してください)。
- ASP.NET MVC はオプションではありません。
解決 2
私はこれについてさらに詳しく調べ、必要に応じてクライアントに Javascript を挿入する方法を見つけました。これは明らかに、コントロールの応答性を高め、サーバーとのラウンドトリップを減らす上で大きな役割を果たします。
例えば: RegisterClientScriptBlock.
もっとこれで遊んでみるのを楽しみにしていて、関わっている人は気軽に参加してください!
他のヒント
非常に奇妙な。ASP.NET サーバー コントロールとカスタム コントロールを使用していますが、Web コントロールは使用していませんか?__doPostBack を手動で呼び出していますか?
物事を難しい方法で行うのが好きですか?
もし私がまだ MVC ではなくサーバー コントロール モデルを使用していたなら、ASP.NET Ajax コントロールをその最悪なツールに叩きつけて、もう終わらせるでしょう。あなたがやっていることは、モデル T に送風機を取り付けるようなものです。それは楽しくて興味深いかもしれませんが、すべての大変な仕事を終えた後、実際には何になりますか?