1

我正在使用可以更改的属性制作用户控件

我有一个 HTML (.aspx):

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

(我的第一个 li 是错误的,另一个将被动态添加并希望确保至少有一个引用 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 解决它不感兴趣

太感谢了

4

3 回答 3

1

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

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

如果你想单独设置它们的样式,你可以直接在 HTML 中内联:

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

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

于 2012-05-29T16:42:47.077 回答
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>

我很高兴!

于 2012-05-29T20:02:27.100 回答
0

您可以使用各种各样的 CSS 选择器来做到这一点http://www.w3.org/TR/CSS2/selector.html

于 2012-05-29T16:36:15.503 回答