私は他の人のコードに取り組んでいて、非常に興味深いものを見つけました。誰かがこれがどのように起こっているかを知っていることを願っています.
マークアップ ファイルに、TextBoxコントロールとDropDownListコントロールを配置し、両方に を割り当てて、背景色やその他のクールな要素を変更します CssClass。InputField
疑問を避けるために、ここに私の宣言を示します。IDE からそのままコピーして貼り付けます。
<asp:TextBox runat="server" ID="txtCity" CssClass="InputField" />
<asp:DropDownList runat="server" ID="ddlState" CssClass="InputField" OnInit="ddlState_Init" OnLoad="ddlState_Load" />
ページを実行する<input>と、正しいクラス名を持つレンダリングが表示されます。
しかし、<select>にはクラス名dropdownがあり、プロジェクト内の別の .css ファイルでたまたま定義されており、もちろん私のものとはスタイルが異なります。
もう一度、ビューソースからの逐語的に:
<input name="ctl00$ctl00$BodyContentPlaceHolder$ContentPlaceHolder1$txtCity" type="text" id="ctl00_ctl00_BodyContentPlaceHolder_ContentPlaceHolder1_txtCity" class="InputField" />
<select name="ctl00$ctl00$BodyContentPlaceHolder$ContentPlaceHolder1$ddlState" id="ctl00_ctl00_BodyContentPlaceHolder_ContentPlaceHolder1_ddlState" class="dropdown"></select>
これがどのように発生するかを調べるために、次の各イベントに足を踏み入れました。
Page_InitPage_LoadddlStates_InitddlStates_Load
にウォッチを追加しましたddlStates.CssClass。
驚いたことに、すべてのイベントで、 の値CssClassが既に に変更されていることがわかりましたdropdown。
クラス名をそんなに早く変更するのは何ですか?
このようなオーバーライド値について私が知らないことはありますか?
何かが値を変更したとしても、コントロールのInitイベント自体の前にそれを行うことができますか?
参考までに: ページ クラスはどのページ ベース クラスからも継承していませんSystem.Web.UI.Page。
参考までに:ランダム属性を追加して正しいインスタンスを見ているddlStatesことを確認し、実行したすべてのイベント ステップ インでその情報が保持されていることを確認しました。
ありがとう。