C#,如何在foreach循环中生成新的html Div?

时间:2013-11-20 19:48:08

标签: c# asp.net

取决于我得到的3个结果的结果数量,我想将每个结果分配给标签文本并将每个新行放入新的Div。我是怎么做到的?

Collection<PSObject> output = pipeline.Invoke();是我存储结果的地方。

这里有一个C#代码示例,

foreach(PSObject psObject in output)
        {
            Label ipLabel = new Label();
            ipLabel.Text = psObject + "\r\n";
            div1.Controls.Add(ipLabel);
        }

这是一个asp.net代码,

<div id="div1" runat="server"></div>

我得到了正确的标签结果,但它全部显示在1 div行而不是每个div新行。

2 个答案:

答案 0 :(得分:14)

理想情况下,标记操作应该使用.aspx文件中的数据绑定而不是代码隐藏来完成,但无论如何:

foreach(PSObject psObject in output) {
    HtmlGenericControl div = new HtmlGenericControl("div");
    div.Controls.Add( new Label() { Text = psObject + "\r\n"; } );
    div1.Controls.Add( div );
}

我将在aspx文件中执行此操作:

<div id="div1">
<% foreach(PSObject psObject in output) { %>
    <div>
    <%: psObject %>
    </div>
<% } //foreach %>
</div>

请注意<%: foo %>的使用等同于<%= Server.HtmlEncode( foo ) %>

答案 1 :(得分:1)

"Panel"控件输出一个div,所以也许您想将Label包装在那里:

foreach(PSObject psObject in output)
{
    Panel ipPanel = new Panel();
    Label ipLabel = new Label();
    ipLabel.Text = psObject;
    ipPanel.Controls.Add(ipLabel);
    div1.Controls.Add(ipPanel);
}

您还可以在标签内添加“
”(粗略的HTML格式):

foreach(PSObject psObject in output)
{
    Label ipLabel = new Label();
    ipLabel.Text = psObject + "<br/>";
    div1.Controls.Add(ipLabel);
}