更改集合asp.net的值和属性

时间:2011-06-05 23:00:32

标签: asp.net

我有这个html标签

<ul id="ul1" runat=server>
    <li id="li1" runat=server> <a href="link" id="a1" runat=server > <img src="link id="img1" runat=server></img></a></li>
    <li id="li2" runat=server> <a href="link" id="a2" runat=server > <img src="link id="img2" runat=server></img></a></li>
    <li id="li2" runat=server> <a href="link" id="a2" runat=server > <img src="link id="img2" runat=server></img></a></li>
    <li id="li2" runat=server> <a href="link" id="a2" runat=server > <img src="link id="img2" runat=server></img></a></li>
    .
    .
</ul>

我从xml文件中获取“li”中每个控件的属性。 我想循环访问<li>集合并更改每个控件的属性。 例如:xml第一个子节点返回第一个图像的src,第一个<a>的src ... xml seconed child返回seconed图像src ....

如果我尝试使用jquery,页面首先加载页面defult属性(那些没有动态创建的)并且在页面加载后,“img src”和'a href “正在改变。

所以唯一的解决方案是使用服务器端在页面加载到客户端之前更改属性值。

我知道如何循环“ul”中的每个“li”但不知道如何使用asp.net更改每个控件的属性

谢谢,任何努力都将受到赞赏

1 个答案:

答案 0 :(得分:0)

您拥有标有runat="server"的所有控件,因此这应该很容易。类似的东西:

HtmlGenericControl ul = this.FindControl("ul1") as HtmlGenericControl;
foreach(HtmlGenericControl li in ul.Controls)
{
     HtmlAnchor a = li.Controls[0] as HtmlAnchor; // add some null validation, etc.
     a.HRef = ...;

     HtmlImage img = a.Controls[0] as HtmlImage; // add some null validation, etc.
     img.Src = ...;
}

如果你需要为某些li做一些明确的事情,你就会知道他们的ID,以便你可以再次使用:

// I'm not sure if you will call it on <ul> or page directly - it depends on naming container
HtmlGenericControl li = ul.FindControl("li3") as HtmlGenericControl;

您还可以通过调用:

设置从HtmlControl派生的任何控件的任何属性
control.Attributes["AttributeName"] = value;