Где определен класс «aspNetDisabled» и почему ASP.NET отображает для него дублирующий атрибут «класс» CSS-дубликатов? - PullRequest
15 голосов
/ 04 апреля 2011

Когда я устанавливаю для свойства «Отключено» элемента управления ASP.NET TextBox значение false, окончательно отображаемый тег HTML textarea (отправляемый в браузер) включает атрибут «class =" aspNetDisabled »в дополнение к« disabled = »Атрибут «отключен».Где определен класс «aspNetDisabled»?

Мне кажется, что он нигде не определен, и настоящим убийцей является то, что этот бесполезный класс мешает моим определенным классам, потому что ASP.NET отображает это вуправлять как дублирующий атрибут класса CSS:

<textarea [...] disabled="disabled" class="aspNetDisabled" class="boxsizingBorder largeinput">

Может ли кто-нибудь еще подтвердить эту ошибку?


Дополнительная информация

Версия IIS: 7.0.6000.16386
AppPool .NET Framework Версия: v4.0
Тег управления сервером на странице ASPX:

<asp:TextBox ID="txtInput1" class="boxsizingBorder largeinput" runat="server" TextMode="MultiLine"></asp:TextBox>.

Ответы [ 8 ]

13 голосов
/ 16 октября 2013

Для тех, кто еще может это искать, мы можем определить этот класс css во время Application_Start в Global.asax:

void Application_Start(object sender, EventArgs e)
{
    WebControl.DisabledCssClass = "customDisabledClassName";
}

Источник: Свойство WebControl.DisabledCssClass (MSDN)

5 голосов
/ 06 сентября 2015

Я закончил тем, что сделал следующее, что эффективно удаляет вставку дополнительного класса для отключенных предметов.

void Application_Start(object sender, EventArgs e)
{
    // Code that runs on application startup
    WebControl.DisabledCssClass = "";
}
2 голосов
/ 04 апреля 2011

Возможно, вы захотите взглянуть на это:

http://msdn.microsoft.com/en-us/library/system.web.ui.htmlcontrols.htmltextarea.aspx

Во-первых, атрибута "класс" не существует. Это элемент управления HTML; если вам нужен доступ на стороне сервера, вам нужно добавить атрибут runat = "server". Есть свойство "Отключено". Также есть свойство "Стиль".

Можете ли вы объяснить, что именно вы пытаетесь сделать и почему вы не используете вместо него TextBox со свойством TextMode , установленным на многострочное?

1 голос
/ 23 января 2019

Когда вы используете 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";
1 голос
/ 12 ноября 2016

Может иметь Visual Studio Проблема с фреймворком. Решение заключается в том, что вы должны выбрать ваш фреймворк, в котором вы сделали свой проект. Для изменения рамок выполните шаг.

1) Щелкните правой кнопкой мыши по конкретному проекту -> Страницы свойств. enter image description here

2) Выберите Build. enter image description here 3) Изменить целевую платформу.

1 голос
/ 30 июля 2015

Это из-за controlRenderingCompatibilityVersion.Если версия вашего фреймворка выше 4, то для этого свойства будет установлено значение по умолчанию "pages controlRenderingCompatibilityVersion =" 4.0 "

Измените controlRenderingCompatibilityVersion =" 3.5 ", и вы увидите, что class =" aspNetDisabled "будет удален из HTML.

1 голос
/ 16 апреля 2014

Будьте осторожны, в .net 4.5 сгенерированный html изменился:

disabled="disabled"

Не всегда будет присутствовать, поэтому используйте «aspNetDisabled» или определенный DisabledCssClass для javascript или css.

0 голосов
/ 24 октября 2016

на первый взгляд кажется, что это (плохой) дизайн

https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webcontrol.supportsdisabledattribute.aspx

Если свойство SupportsDisabledAttribute элемента управления имеет значение false и элемент управления отключен, 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 У меня там есть панель, которая отключена, и кажется, что она добавляет disabled = "disabled" ко всем отображаемым дочерним элементам (включая DropDownList), за исключением тех, которые для ListBox явно установлены в значение Enabled = "False", которые кажутся получить класс = "aspNetDisabled". Когда я включаю родительскую панель, эти списки при визуализации по-прежнему используют class = "aspNetDisabled" (вместо disabled = "disabled", как, кажется, использует DropDownList), и пользователь может выбрать элемент в них (они не отключены).

Так что это похоже на ошибку в элементе управления ListBox, возможно, он устанавливает «SupportsDisabledAttribute» в false, в то время как DropDownList должен устанавливать для него значение true. Если это так, то это глупо, так как они оба отображаются как "select", а ListBox просто использует "size = 4", чтобы показать 4 элемента по умолчанию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...