如何在没有ID的情况下更改类css的属性?

时间:2012-05-29 16:33:15

标签: c# asp.net .net css

我正在制作一个具有可更改属性的用户控件

我有一个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*/
}

如何在不使用ID代码的情况下添加样式属性?(因为它是生成dinicamente) 例如:

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

为所有生成的动态更改li css属性

我不想用javascript或jquery来解决它

非常感谢你

3 个答案:

答案 0 :(得分:1)

使用“class”属性和CSS是样式元素的好方法。目前尚不清楚你想要“动态”做什么,但也许只是简单地改变你的CSS就足够了(如果唯一的原因是提到CSS的类,你真的不需要隐形元素):

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

如果您想单独设置样式,可以直接在HTML中内嵌:

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

注意:如果您构建控制树而不是使用InnerHtml属性会更容易。至少不要指定runat='server',因为在使用InnerHtml属性时没有值。

答案 1 :(得分:0)

您可以使用各种各样的CSS选择器来执行http://www.w3.org/TR/CSS2/selector.html

答案 2 :(得分:0)

我的问题的两个答案:

用户Alexei Levenkov提到生成通用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>

我很高兴!

相关问题