Где определяется класс "aspNetDisabled" и почему ASP.NET создает для него мешающий дублирующий атрибут "class" класса?
Когда я устанавливаю свойство "Отключено" элемента управления TextBox ASP.NET равным false, конечный отображаемый тег textarea HTML (отправленный в браузер) включает атрибут "class=" aspNetDisabled "в дополнение к" отключенному "=" disabled" '. Где определяется класс aspNetDisabled?
Мне кажется, что он нигде не определен, и реальный убийца состоит в том, что этот бесполезный класс мешает моим определенным классам, потому что ASP.NET передает это в элемент управления как дублирующий атрибут класса CSS:
<textarea [...] disabled="disabled" class="aspNetDisabled" class="boxsizingBorder largeinput">
Может ли кто-нибудь еще подтвердить эту ошибку?
Дополнительная информация
Версия IIS: 7.0.6000.16386
Версия .NET Framework для платформы AppPool: v4.0
Тег управления сервером на странице ASPX:
<asp:TextBox ID="txtInput1" class="boxsizingBorder largeinput" runat="server" TextMode="MultiLine"></asp:TextBox>.
Ответы
Ответ 1
Вы можете посмотреть на это:
http://msdn.microsoft.com/en-us/library/system.web.ui.htmlcontrols.htmltextarea.aspx
Во-первых, нет атрибута class. Это HTML-контроль; если вам нужен серверный доступ, вам нужно добавить атрибут runat = "server". Существует свойство "Отключено". Существует также свойство "Стиль".
Можете ли вы объяснить, что именно вы пытаетесь сделать, и почему вы не используете TextBox вместо TextMode свойство установлено в многострочное?
Ответ 2
Для тех, кто все еще может найти это, мы можем определить этот класс css во время Application_Start в Global.asax:
void Application_Start(object sender, EventArgs e)
{
WebControl.DisabledCssClass = "customDisabledClassName";
}
Источник: Свойство WebControl.DisabledCssClass(MSDN)
Ответ 3
В итоге я сделал следующее, что эффективно удаляет вставку дополнительного класса для отключенных элементов.
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
WebControl.DisabledCssClass = "";
}
Ответ 4
Будьте осторожны, в .net 4.5 сгенерированный html изменился:
disabled="disabled"
Не всегда будет присутствовать, поэтому используйте "aspNetDisabled" или определенный DisabledCssClass для javascript или css.
Ответ 5
Это из-за controlRenderingCompatibilityVersion.
Если ваша версия фрейма выше 4, то это свойство будет установлено по умолчанию
"page controlRenderingCompatibilityVersion =" 4.0 "
Измените controlRenderingCompatibilityVersion = "3.5"
и вы можете видеть, что class= "aspNetDisabled" будет удален из html.
Ответ 6
У этого может быть проблема с Visual Studio Framework.
Решение состоит в том, что вам нужно выбрать свою структуру, в которой вы создали свой проект.
Для изменения рамки следуйте шагу.
1) Щелкните правой кнопкой мыши на конкретном проекте → Страницы свойств.
![введите описание изображения здесь]()
2) Выберите "Сборка".
3) Измените целевую структуру.
Ответ 7
Поначалу кажется, что это по (плохому) дизайну
https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webcontrol.supportsdisabledattribute.aspx
Если свойство SupportsDisabledAttribute элемента управления является ложным и элемент управления отключен, ASP.NET устанавливает атрибут класса визуализировал HTML-элемент к значению WebControl.DisabledCssClass имущество. Значение по умолчанию для WebControl.DisabledCssClass Свойство "aspNetDisabled". Предоставить отключенный внешний вид для отключенных элементов управления, вы должны определить правило CSS для класса, который представленное значением свойства WebControl.DisabledCssClass. Элемент HTML, отображаемый для элемента управления, может иметь больше, чем одно значение в его атрибуте класса, если в CssClass есть значение имущество. Для получения дополнительной информации см. Свойство DisabledCssClass.
Странно, что я вижу как disabled = "disabled", так и class= "aspNetDisabled" на одной и той же веб-странице:
https://www.dropbox.com/s/sv47x7yoqdzkzh4/Screenshot%202016-10-24%2018.24.16.png?dl=0
У меня есть панель там, которая отключена, и кажется, что она отключена = "отключена" для всех ее обработанных дочерних элементов (включая DropDownList), за исключением списков ListBox, в которых я, очевидно, установлен Enabled = "False", которые кажутся для получения class= "aspNetDisabled". Когда я включаю родительскую панель, эти списки при рендеринге все еще используют class= "aspNetDisabled" (вместо disabled = "disabled", как кажется DropDownList), и пользователь может выбрать элемент в них (они не отключены).
Таким образом, он выглядит как ошибка в элементе управления ListBox, вероятно, он устанавливает значение "SupportsDisabledAttribute" в false, а DropDownList должен устанавливать его в true. Если это так, это глупо, поскольку оба они отображаются как "select", а ListBox просто использует "size = 4" для отображения по 4 элемента по умолчанию.
Ответ 8
Когда вы используете Enabled = "false" для любого элемента управления в asp.net, он автоматически связывает класс css "aspNetDisabled" с этим элементом управления. Если вы не хотите использовать предоставленный класс автоматически, вы можете достичь этого с помощью строки кода, приведенной ниже, на самом первом шаге вашего файла .cs.
System.Web.UI.WebControls.TextBox.DisabledCssClass = "CLASS_NAME_WHICH_YOU WANT_TO_APPLY";
//Или вы можете сделать это пустым//В приведенной выше строке кода я сделал это для элемента управления TextBox. Если вы хотите подать заявку на другие элементы управления, вы можете сделать это, например: -
System.Web.UI.WebControls.CheckBox.DisabledCssClass = "CLASS_NAME_WHICH_YOU WANT_TO_APPLY";