2012-05-29 3 views
1

Я делаю пользовательский элемент управления со свойствами, которые могут изменитьКак изменить свойства класса css без ID?

У меня есть HTML (.aspx):

<div> 
    <ul> 
     <li id="li_id" runat="server" class="myStyle" visible="false"></li> 
    </ul> 
</div> 

(Мой первый литий ложна, что другие будут добавлены динамически и хотите чтобы убедиться, что есть по крайней мере одна ссылка CSS класс)

мой отделенного кода:

for (int i = 0; i < fotos.Count(); i++) 
{ 
    if (File.Exists(Server.MapPath((fotos[i])))) 
    { 
     content_slider_inside.InnerHtml += @"<li id='img" + i.ToString() + "'><IMG SRC='" + fotos[i] + "' HEIGHT='490PX' /></li>"; 
     navigation.InnerHtml += "<li class='myStyle' runat='server'><a href='#img" + (i+1).ToString() + "'>" + (i+1).ToString() + "</a></li>"; 
    } 
} 

Мой CSS (.css)

.myStyle 
{ 
    /*empty*/ 
} 

Как я добавить свои свойства стиля без использования идентификационного кода? (так как он генерируется dinicamente) , например:

myStyle["background-color"]="red"; 

для всех генерироваться динамически изменять свойства CSS Li

Я не заинтересован, чтобы решить его с Javascript или JQuery

спасибо, много

+0

Вы хотите (а) изменить стиль динамически, (b) изменить стиль только для одного элемента, (c) изменить конкретное свойство стиля для одного элемента? –

+0

Я хочу изменить элементы с классом css («myStyle»), потому что я делаю пользовательский элемент управления со свойствами, которые могут меняться. – ch2o

+1

Так почему же изменение самого файла CSS не работает для вас? –

ответ

1

Использование атрибута «class» и CSS - хороший способ стилизации элементов. Не ясно, что вы пытаетесь сделать «динамически», но, возможно, просто изменив вам CSS достаточно (и вы на самом деле не нужен невидимый элемент, если единственная причина, чтобы упомянуть класс для CSS):

.myStyle 
{ 
    background-color:"red"; 
} 

Если вы хотите, чтобы стиль их по отдельности можно встроить в HTML непосредственно:

navigation.InnerHtml += "<li style='background-color:red;' ... 

Примечание: это было бы проще, если вы строите дерево управления вместо использования InnerHtml собственности. По крайней мере, не указывайте runat='server', поскольку в нем нет значения при использовании свойства InnerHtml.

0

два ответа на мою проблему:

, как указано пользователем Алексей Левенков генерирующего общий HTML управляет HtmlGenericControl

for (int i = 0; i < fotos.Count(); i++) 
{ 
    if (File.Exists(Server.MapPath((fotos[i])))) 
    { 
     content_slider_inside.InnerHtml += @"<li id='img" + (i + 1).ToString() + "'><IMG SRC='" + fotos[i] + "' HEIGHT='490PX' /></li>"; 
     //navigation.InnerHtml += "<li id='item" + (i+1).ToString() + "' runat='server' class='menu_item'><a href='#img" + (i+1).ToString() + "'>" + (i+1).ToString() + "</a></li>"; 

     HtmlGenericControl a = new HtmlGenericControl("a"); 
     a.Attributes["href"] = "#img" + (i+1).ToString(); 
     a.InnerHtml = (i + 1).ToString(); 

     HtmlGenericControl c = new HtmlGenericControl("li"); 
     c.ID = "item" + (i+1).ToString(); 
     c.Attributes["runat"] = "server"; 
     c.Attributes["class"] = "menu_item"; 
     c.Controls.Add(a); 

     navigation.Controls.Add(c); 

     id_imgs.Add("img" + (i+1).ToString()); 
     id_items.Add("item" + (i+1).ToString()); 
    } 
} 

, а затем я могу получить доступ к их стилей вручную через его собственность

foreach(string i in id_items) 
{ 
    HtmlGenericControl liItem = (HtmlGenericControl)navigation.FindControl(i); 
    if (liItem != null) 
    { 
     if (menu_Item_Fondo != null) 
      liItem.Style["background-color"] = menu_Item_Fondo; 
     if (menu_Item_Hover_Fondo != null) 
     { 
      StringBuilder style = new StringBuilder(); 
      style.AppendLine(".navigation li a:hover { "); 
      style.AppendLine(String.Format(" color: {0};", menu_Item_Hover_TextColor)); 
      style.AppendLine(String.Format(" background-color: {0};", menu_Item_Hover_Fondo)); 
      style.AppendLine("} "); 
      style_menu_item.InnerText = style.ToString(); 
     } 
    } 
} 

Чтобы использовать динамический динамический стиль, добавьте один стиль этикетки

<div> 
    <style id="style_menu_item" runat="server" class="class_style"></style> 
    <ul> 
     <li id="li_id" runat="server" class="myStyle" visible="false"></li> 
    </ul> 
</div> 

Я счастлив!