【问题标题】:Add a div contains asp Label from code behind in asp.net在 asp.net 后面的代码中添加一个包含 asp 标签的 div
【发布时间】:2014-07-25 09:46:47
【问题描述】:

我尝试在按钮单击事件中添加一个包含asp:Labeldiv
我使用的以下代码。

代码

string htmlString = "<div><asp:Label ID=\"l1\" runat=\"server\" Text=\"WELCOME\"></asp:Label></div>";
Panel1.Controls.Add(new LiteralControl(htmlString));

但我无法查看特定的div
请尝试解决这个问题。

提前致谢。

【问题讨论】:

    标签: asp.net webforms


    【解决方案1】:

    为这样的服务器控件添加标记不会处理服务器控件,而只是将该标记放入生成的 HTML 中

    您可以使用HTmlGenericControl 来做到这一点

    using System.Web.UI.HtmlControls;
    
    Label lbl = new Label();
    lbl.Text = "WELCOME";
    
    HtmlGenericControl div = new HtmlGenericControl("div");
    
    div.Controls.Add(lbl);
    Panel1.Controls.Add(div);
    

    要在div 中添加DataList,您可以执行以下操作

    DataList dl = new DataList();
    //Init your DataList here 
    dl.DataSource = dt; // `dt` is a DataTable with my data
    dl.DataBind()
    
    HtmlGenericControl div = new HtmlGenericControl("div");
    
    div.Controls.Add(dl);
    Panel1.Controls.Add(div);
    

    【讨论】:

    • 其实我想在那个div里面添加一个DataList。
    • 同样的概念在这里适用,你可以使用DataList而不是Label,并且不需要其他更改,我更新了我的代码sn-p
    • 还有一个疑问。如何将数据绑定到这个datalist?
    • 我添加了一个关于如何绑定数据的小sn-p,如果您在这方面需要更多帮助,我认为最好开始一个新问题(这样更多人会看到它)。
    【解决方案2】:

    您不能使用服务器控件直接输出流。为此,您需要 Html Generic Controls

    你可以如下声明一个控件

    HtmlContainerControl Container = new HtmlGenericControl("div");
    

    然后将其添加到 Panel1 如下

    Panel1.Controls.Add(Container);
    

    您可以在div 中添加尽可能多的控件,注意Label 在html 上呈现为span,因此您需要使用跨度而不是标签。

    结合所有你可以写如下

    HtmlContainerControl Container = new HtmlGenericControl("div");
    HtmlContainerControl Span= new HtmlGenericControl("span");
    //set the property here
    Span.Attributes.Add("innerHtml", "WELCOME");
    
    Contriner.Controls.Add(Span);
    Panel1.Controls.Add(Container);
    

    【讨论】:

      【解决方案3】:

      所有的asp控件都将在浏览器中呈现为html控件..您的代码将呈现为

      &lt;span id="l1"&gt;WELCOME&lt;/span&gt;

      但是当您使用 LiteralControl 时,它只会添加一个 html 类型的控件。 所以你的代码不会被解析..结果将是一个无效的html标签..

      创建一个标签 asp 控件并改为添加到面板中

            Label label1 = new Label();
            label1.Text = "WELCOME";
            Panel1.Controls.Add(label1);
      

      【讨论】:

        猜你喜欢
        • 2012-01-04
        • 2017-03-29
        • 2021-09-19
        • 2013-08-21
        • 2013-10-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-26
        相关资源
        最近更新 更多