我正在制作一个具有可更改属性的用户控件
我有一个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来解决它
非常感谢你
答案 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>
我很高兴!