CSS-форматирование для элементов управления ASP - PullRequest
0 голосов
/ 06 октября 2009

У меня есть ASP: элемент управления Label на моей странице, и я хотел бы дать ему некоторое форматирование CSS. Я знаю, что мог бы дать ему имя CssClass, однако, это кажется неправильным, потому что я хочу дать ему определенное позиционирование, поэтому я ищу что-то более похожее на обычный атрибут "id" элементов html.

Идентификатор метки - это тот, который используется ASP, но в реальном html я получаю другой идентификатор.

Есть предложения? Спасибо.

Ответы [ 5 ]

2 голосов
/ 06 октября 2009

Следующая версия ASP.Net облегчит указание точного идентификатора клиента для элемента управления. На данный момент у вас есть несколько вариантов решения этой проблемы:

Встроенные стили

<asp:Label runat="server" ID="MyLabel" style="..." />

CssClass

Просто используйте класс CSS, как вы упомянули в своем вопросе. Ничто не мешает вам сделать их уникальными, если нужно.

Напишите обработчик для обслуживания таблицы стилей

Когда вы пишете таблицу стилей, оставьте заполнитель в файле для идентификаторов клиентов. Затем используйте обработчик http для замены фактических идентификаторов при каждом запросе. Это не совсем просто, потому что запрос таблицы стилей отделен от запроса html-страницы, но это, безусловно, возможно и поэтому стоит упомянуть.

Использовать контейнер

Поскольку метка отображается как тег span, если этот интервал уникален в конкретном контейнере именования, вы можете выбрать его следующим образом:

<div id="MyContainer"><asp:Label ID="MyLable" runat="server" /></div>

А в твоей таблице стилей:

#MyContainer span { /*...*/ }

Используйте контейнер + класс

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

<div id="MyContainer"><asp:Label ID="MyLable" runat="server" CssClass="MyClass"/></div>    

и в вашей таблице стилей:

#MyContainer span.MyClass { /*...*/ }
1 голос
/ 06 октября 2009

Ваши единственные варианты - использовать CssClass или встроенные стили. Поскольку ASP.NET автоматически генерирует идентификаторы серверных элементов управления, вы никогда не должны пытаться догадаться, что это будет. Это может быть большой проблемой, заставляя Webforms работать с элегантными макетами CSS.

ASP.NET 4.0 представит свойство ClientID , которое должно упростить работу с атрибутами ID в будущем.

1 голос
/ 06 октября 2009

ASP.net существенно ломает селектор CSS ID. Чтобы обойти это иногда, я помещу этот идентификатор в атрибут CssClass.


    <style type="text/css">
       input.first-name { /* style me */ }
    </style>

    <asp:TextBox runat="server" ID="firstName" CssClass="first-name" />

Вы также можете добавить несколько имен классов в атрибуте CssClass


    <style type="text/css">
       input.first-name { /* style me */ }
       input.text-input { /* because ie 6 won't do input[type=text] */ }
    </style>

    <asp:TextBox runat="server" ID="firstName" CssClass="first-name text-input" />

Я стараюсь, насколько это возможно, не использовать встроенный стиль или использовать дополнительные атрибуты стиля, предоставляемые элементами управления.

0 голосов
/ 06 октября 2009

Да - основная головная боль с веб-формами - идентификатор состоит из всех разделов содержимого, панелей и т. Д., В которых находится ярлык (или другой элемент управления).

Лучше всего добавить класс CssClass к элементу управления.

0 голосов
/ 06 октября 2009

Я думаю, вы можете сделать что-то вроде:

<asp:Label ID+"lblID" style=" [whatever style you want goes in here "] runat="server />

Помните, что когда отображается элемент управления, он отображается как ctrl.etc ....

Или, если вы делаете позиционирование, вы не можете обернуть этикетку в <div>

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