Я работаю над чужим кодом и нашел что-то очень интересное и надеюсь, что кто-то может знать, как это происходит.
В файле разметки я размещаю элемент управления 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_Init
Page_Load
ddlStates_Init
ddlStates_Load
и добавил часы к ddlStates.CssClass
.
К моему шоку, я обнаружил, что во всех случаях значение CssClass
уже изменено на dropdown
.
Что меняет название класса так рано?
Может ли что-то, чего я не знаю, о переопределении таких значений?
Даже если что-то меняет значения , может ли оно сделать это до самого события Init
элемента управления?
К вашему сведению : класс страницы не наследуется ни от какого базового класса страницы - просто прямой System.Web.UI.Page
.
К вашему сведению : я убедился, что я * смотрю на правильный экземпляр ddlStates
, добавив случайный атрибут, и проверил, что он сохраняет эту информацию во всех входных событиях Я сделал.
Спасибо.