Применение встроенного CSS к серверному элементу управления ASP.NET

На основе простого теста я побежал, я не думаю, что можно установить встроенный <style> тег в серверный элемент управления ASP.NET. Стиль не заканчивался визуализацией выходного HTML. Даже если это было возможно, я уверен, что это плохая практика.

Можно ли это сделать? Я вижу, что это полезно для быстрых прототипов, в которых есть только 1 или 2 класса CSS.

Update:

По просьбе Джонатана я собирался опубликовать код. Но, когда я открыл свой проект и снова загрузил страницу (только для пинков), он работал правильно. Я предполагаю, что это как-то связано с перезапуском сервера разработки ASP.NET, который запускает Visual Studio при запуске страницы.

В любом случае, когда я включил одинаковые элементы управления на странице, я получил несколько одинаковых стилей. Вероятно, это будет объяснение, почему это плохо. Несмотря на это, всегда хорошо знать лучшие практики и альтернативные методы решения задачи, поэтому я благодарю всех за их ответы.

Ответ 1

Согласно www.w3schools.com:

Элемент стиля находится в разделе главы. Если вы хотите включить таблицу стилей на свою страницу, вы должны определить таблицу стилей извне и связать ее с помощью <link>.

Поэтому не рекомендуется включать элементы стиля (например, блок <style type="text\css"></style>) в элемент управления. Если бы вы могли, это, вероятно, имело бы эффект в некоторых браузерах, но это не подтвердило бы и будет плохой практикой.

Если вы хотите применить стили inline к элементу, то любой из них будет работать:

С#

myControl.Attributes["style"] = "color:red";

myControl.Attributes.Add("style", "color:red");

VB.NET

myControl.Attributes("style") = "color:red";

myControl.Attributes.Add("style", "color:red");

Но имейте в виду, что это заменит любые существующие стили, установленные в атрибуте style. Это может быть проблемой, если вы попытаетесь установить стили в более чем одном месте в коде, поэтому вам нужно следить.

Использование CSS-классов было бы предпочтительнее, так как вы можете группировать объявления нескольких стилей и избегать избыточности и раздувания страниц. Все элементы управления, полученные из WebControl, имеют CssClass, которое вы можете использовать, но будьте осторожны, чтобы не перезаписывать существующие классы, которые были применены в других местах.

Ответ 2

Intellisense не даст вам подсказок, но вы можете это сделать:

<asp:Label ID="Label1" runat="server" Text="Label" style="color:Red;"></asp:Label>

Ответ 3

Если вы используете атрибуты [ "style" ], вы переписываете стиль каждый раз, когда вы его вызываете. Это может быть проблемой, если вы делаете вызов в двух разных разделах кода. Кроме того, это может быть проблемой, поскольку инфраструктура включает свойства для базовых настроек, таких как граница и цвет, которые также будут применяться как встроенные стили. Вот пример:

// wrong: first style will be overwritten
myControl.Attributes["style"] = "text-align:center";
// in some other section of code
myControl.Attributes["style"] = "width:100%";

Чтобы играть красиво, вместо этого установите такие стили:

// correct: both style settings are applied
myControl.Attributes.CssStyle.Add("text-align", "center");
// in some other section of code
myControl.Attributes.CssStyle.Add("width", "100%");

Ответ 4

Я думаю, вам придется добавить его в качестве атрибута для управления сервером... для его отображения в HTML.

Итак, в основном (в С#),

ControlName.Attributes["style"] = "color:red";