I have a div like this:
<div id="columns" runat="server">
<ul id="column1" class="column" >
<!-- /////////////// -->
</ul>
<ul id="column2" class="column" runat="server">
</ul>
<ul id="column3" class="column" runat="server">
</ul>
<ul id="column4" class="column" runat="server">
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
</ul>
</div>
在运行时,我创建了一个 列表项(
HtmlGenericControl outer_li = new HtmlGenericControl("li");
) 在 (ul
具有属性 runat ="server"
).
现在我想做的是:
循环遍历 div id="columns"
来获取每个(ul
具有属性 runat ="server"
) 然后循环遍历每个(ul) 来获取每个列表项以保存内容。foreach (Control c in columns.Controls.OfType<HtmlGenericControl>())
{
var ctrl = (HtmlGenericControl)c;
if (ctrl.TagName == "ul" && ctrl.ID != "column1")
{
foreach (Control li in ctrl.Controls.OfType<HtmlGenericControl>())
{
var ctrl_li = (HtmlGenericControl)li;
if (ctrl_li.TagName == "li")
{
string id = ctrl_li.ID;
}
}
}
}
这不起作用,我无法获取页面上的“li”,尽管有li
标签。
编辑2:
protected void CreateBlockOfData(string widget_color, int column_par, string process_name, int block_type, int block_id)
{
HtmlGenericControl outer_li = new HtmlGenericControl("li");
outer_li.Attributes.Add("class", widget_color);
if (column_par == 1)
{
column1.Controls.Add(outer_li);
}
else if (column_par == 2)
{
//uppnl_2.ContentTemplateContainer.Controls.Add(outer_li);
column2.Controls.Add(outer_li);
}
else if (column_par == 3)
{
column3.Controls.Add(outer_li);
}
else if (column_par == 4)
{
column4.Controls.Add(outer_li);
}
////////////////////////////////////////////////////////////
HtmlGenericControl div_head = new HtmlGenericControl("div");
div_head.Attributes.Add("class", "widget-head");
outer_li.Controls.Add(div_head);
////////////////////////////////////////////////////////////
HtmlGenericControl h3 = new HtmlGenericControl("h3");
div_head.Controls.Add(h3);
///////////////////////////////////////////////////////////
Label lbl_process_name = new Label();
lbl_process_name.Text = process_name.TrimEnd();
h3.Controls.Add(lbl_process_name);
///////////////////////////////////////////////////////////
HtmlGenericControl div_content = new HtmlGenericControl("div");
div_content.Attributes.Add("class", "widget-content");
outer_li.Controls.Add(div_content);
////////////////////////Data//////////////////////////////
Control crl_data = FormTheData(block_type, block_id);
PlaceHolder1.Controls.Add(crl_data);
crl_data.DataBind();
div_content.Controls.Add(crl_data);
}
BulletedList
类? - MAW74656<li>
作为HTML文本添加到占位符中,那么在ASP.Net的视角下它们不是“控件”。您不能将“runat=server”作为纯属性添加以使其成为控件,您需要将它作为HtmGenericControl或类似的内容添加。 - Hans Kesting