私の ASP.NET 以前の開発環境には、ほぼ普遍的なベスト プラクティスがありました。
* NEVER use the native controls!
* Instead, subclass ALL the controls, and ALWAYS use the subclassed version.
なんで?それはあなたにフックを与えたからです...コードを記述し、アプリケーション全体に適用するための1つの場所。
例: Web フォーム アプリのすべての TextBox の右側に疑問符アイコンを表示することにしたとします。アイコンがレンダリングされ、その上にカーソルを置くとバブル ヘルプがポップアップ表示されます (TextBox.ToolTip プロパティにテキストがある場合)。
MS 提供の TextBox コントロールを使用している場合、どのようにそれを達成しますか?
アプリケーションで TextBox のサブクラス化されたバージョンを一貫して使用している場合は、そのオブジェクトに移動し、アイコンをレンダリングするメソッドを追加して、お気に入りの bubblehelp JavaScript をストックすることができます。
プレスト!アプリのすべての TextBoxes は小さなクエスチョン マーク アイコンを生成します。または、ToolTip テキストを設定すると生成されます。
時間の経過とともに、すべての TextBox を簡単に適応させて拡張することができます。これは、すべての TextBox に変更可能な基本クラスがあるためです。ツール ヒントがリソース ファイルから設定される機能を追加します。次に、TextBox の左側にアイコンを表示する ShowOnLeft プロパティを追加します。iPhone のパスワード コントロールで最後に入力した文字が表示され、それより前の文字が隠されているのが好きですか? サブクラス化された TextBox のパスワードに対するデフォルトの動作を、その動作を実装するメソッドでオーバーライドします。
ASP.NET で、この慣行の支持者に会ったことはありません。私はちょうどそれを逃したのですか?2 ダースの ASP.NET デザイン パターンを説明する記事には、関連するものは何もありません。サーバー コントロールをサブクラス化する方法に関する投稿では、数字のみを受け入れる TextBox など、特別な目的の 1 回限りの機能について説明していますが、「常にサブクラス化されたコントロールを使用してください!」という普及を推奨するものはありません。私が昔加入していたポリシー。
ASP.NET で作業するときに、この古くからの知恵を適用することは理にかなっていますか? ネイティブ サーバー コントロールと同等のサブクラス化されたものを常に使用するには?
そうでない場合 - なぜですか?この猫の皮を剥ぐ他の方法はありますか? 特定のコントロールのアプリケーションのすべてのインスタンスを拡張できる場所を 1 つだけ提供する手法ですか?
それについて聞きたいです。TextBoxQMarkコントロールが必要です。:-)
TIA - ホイスター