2015-05-19 2 views
2

Я хотел бы определить элемент background-color элемента, используя значение, хранящееся в файле resource (resx). Я готов написать эту часть CSS на странице aspx вместо внешнего файла CSS.Использовать код в CSS

Я пробовал использовать как обозначение <%= %>, так и <%# %>. Тем не менее, neithr из них работают:

Когда я пытаюсь использовать <%= %>:

.lblHolisticStatus{ 
    background-color: <%= Resources.ItemList.NeedsSupportColor %> ; 
} 

Я получаю сообщение об ошибке:

The Controls collection cannot be modified because the control contains code blocks (i.e. <% ... %>). 

И когда я пытаюсь с помощью <%# %>:

.lblHolisticStatus{ 
    background-color: <%# Resources.ItemList.NeedsSupportColor %> ; 
} 

У меня нет ошибки, но нет никакой ценности. Вот как я это вижу в источнике просмотра страницы:

.lblHolisticStatus{ 
    background-color: ; 
} 

Solutions Я предпочел бы не делать:

  • Я не хочу, чтобы определить background-color в коде позади, потому что я например, иметь определения CSS, сделанные в CSS, поэтому упрощение обслуживания.
  • Назначение другого класса css для элемента, содержащего цвет фона, не помогло бы, потому что мне все равно придется определять фоновый цвет в CSS. И я все еще хочу, чтобы использовать значение из файла ресурсов ...

Это мой полный код (минус нерелевантные элементы):

<head runat="server"> 
    <style> 
     .lblHolisticStatus{ 
      float:left; 
      font-size:1.7rem; 
      color:#fff; 
      padding: 1rem 2.5rem; 
      background-color: <%# Resources.ItemList.NeedsSupportColor %> ; 
     } 
    </style> 
</head> 
<body> 
    <div class="categoryStatus cf"> 
     <span class="lblHolisticCategory"> 
      <%=CategoryName ?? Resources.ItemList.DataNotFound %> 
     </span> 
     <span class="lblHolisticStatus cls<%= ((eStatus)Type).ToString()%>"> 
      <%=GetGlobalResourceObject("ItemList", char.ToUpper(((eStatus)Type).ToString()[0]) + ((eStatus)Type).ToString().Substring(1))%> 
     </span> 
    </div> 
</body> 
+0

Почему вы не можете назначить класс css для элемента, содержащего цвет фона? Вам понадобится два класса, созданных в этом случае, и каждый раз каждый раз, используя ваши потребности. – Morpheus

+0

Это не помогло бы, потому что мне все равно придется определять цвет фона в CSS. И я все равно хочу использовать значение из файла ресурсов ... –

+1

Ошибка первого сценария ('The Controls collection ...') нечетна, можете ли вы предоставить больше контекста? – Amit

ответ

1

Видимо, вы не можете использовать <% %> внутри <head> при работе на сервере (<head runat="server">). (here's another reference). Что вы можете сделать, это либо запустить на клиенте, либо переместить часть <style> вниз в <body>.

+0

Спасибо, Амит. Ваш ответ поставил меня в правильном направлении: вы не можете использовать '<%= %>' внутри '', * когда '' имеет атрибут 'runat =" server "' * (извините, он поскользнулся с полного кода, который я добавил). Как только я удалил 'runat =" server "' (он фактически не нужен), я мог бы использовать '<%= %>', а затем не нужно' this.DataBind() '. –

+0

Отлично! Я исправлю свой ответ с вашего комментария. – Amit

1

Существует обходной путь:

использование: (с #)

background-color: <%# Resources.ItemList.NeedsSupportColor %> ; 

и сделать в Page_Load:

this.DataBind()

Но я должен сказать, что вы делаете что-то не так. (Показать нам полный код)

+0

Спасибо! Я хотел бы понять, что я делаю неправильно. Добавлен полный код (эл) на вопрос –

Смежные вопросы