динамически изменять значение атрибута css в asp.net - PullRequest
2 голосов
/ 15 июля 2009

как я могу изменить значение атрибута css во время выполнения, как все h1 color = "blue" и все p color = "green". если кто-нибудь знает, пожалуйста, помогите мне!

Ответы [ 4 ]

7 голосов
/ 15 июля 2009

Довольно просто (я предполагаю, что вы хотите сделать это на стороне сервера) - объявите заголовок как runat = server и присвойте ему идентификатор:

<h1 runat="server" id="someHeading">Blah</h1>

Затем вы можете программно манипулировать им в коде, например так:

someHeading.Style.Add("color", "blue");

Будет отображен следующий HTML-код:

<h1 id="someHeading" style="color:blue;">Blah</h1>

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

Обновление - поскольку вы меняете его динамически, более подходящим может быть следующее:

someHeading.Style["color"] = "red";

Я уверен, что кто-то еще опубликует ответ о том, как сделать это на стороне клиента. : -)

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

1 голос
/ 15 июля 2009

В JQuery вы можете просто использовать

$('h1').css("color","blue");

В коде ASP.Net нет селектора для применения css к нескольким тегам html, потому что HTML генерируется только после выполнения большей части кода. Это происходит в событии Page_PreRender.

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

Я бы посоветовал вам сделать это с помощью javascript, хотя изменение рендеринга html в событии Page_PreRender - это то, что определенно вызовет у вас проблемы в дальнейшем и в основном не будет сделано.

0 голосов
/ 17 ноября 2011

Пожалуйста, попробуйте код ниже, я буду работать для вас:

someHeading.Attributes.CssStyle.Add(HtmlTextWriterStyle.Color, "red");
0 голосов
/ 15 июля 2009

Полагаю, он имеет в виду каждый элемент на странице. Я бы порекомендовал добавить литерал в заголовок сразу после вашей текущей таблицы стилей, а затем добавить встроенный стиль со следующим кодом:

<asp:Literal ID="litInlineStyles" runat="server" EnableViewState="false" Visible="false">
  <style type="text/css">
  h1 
  {
    color: {h1Colour}
  }
  p
  {
    color: {pColour}
  }
  </style>
</asp:Literal>

Я намеренно отключил состояние просмотра и видимость, поэтому вам нужно каждый раз при загрузке страницы объявлять, что заменить {h1Colour} на {pColour}, а также устанавливать литерал видимым.

Это должно помочь направить вас в правильном направлении.

...