【问题标题】:How to add HTML elements Dynamically (ASP.NET)如何动态添加 HTML 元素 (ASP.NET)
【发布时间】:2015-02-06 13:57:12
【问题描述】:

我正在动态创建链接按钮:

Lnk1

Lnk2

..

我想动态地在它们之间添加一个文本(或任何 HTML 元素),例如:

Lnk1
Seperator
Lnk2
Sepeperator

这是我的代码:

 for (int i=0;i<10;i++)
            {
    form1.Controls.Add(lnks[i]);
    Response.Write("Seperator<br>");
}

但在输出中我得到以下图片:

请告诉我如何在一个链接按钮之后添加一个文本。

【问题讨论】:

    标签: c# asp.net vb.net


    【解决方案1】:

    看看这种方法。您走在正确的轨道上,但您需要考虑表单本身。该表单有一个名为 Controls 的集合属性。如果在 for 循环中实例化控件,则可以有效地按顺序添加每个控件。首先,创建您的 LinkBut​​ton 实例并为其分配属性。然后,创建您想要使用的任何类型的分隔符控件。我在这个例子中使用了一个 HtmlGenericControl,它允许我们分配一个文本属性(Separator)。请注意,我从 1 而不是 0 开始循环以匹配您的示例......希望这会有所帮助。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            for (int i = 1; i < 11; i++)
            {
                LinkButton linkButton = new LinkButton();
                linkButton.Text = "Lnk" + i;
                linkButton.Click += linkButton_Click;
                form1.Controls.Add(linkButton);
    
                HtmlGenericControl p = new HtmlGenericControl("p");
                p.InnerText = "Separator";
                form1.Controls.Add(p);
            }
        }
    
        void linkButton_Click(object sender, EventArgs e)
        {
            Response.Redirect("http://www.stackoverflow.com");
        }
    }
    

    【讨论】:

    • 好消息 +1。我把接受的答案挂在你的上面。由于 HtmlGenericControl 似乎适合我的需求。我需要添加标签并更改它们的样式。 Literalcontrol 对象没有样式属性。
    • 公平地说,下面的答案很有帮助,应该被否决。所以请投票。它不允许我投票。
    • @SNash。我听到了。我没有否决另一个答案。 (我个人并不是很喜欢。大多数人都在努力提供帮助,并不太关心声誉点数。)我确实继续投票,因为你觉得它很有帮助。
    【解决方案2】:

    尝试将其用作参考。它在我过去的项目中的工作代码。

    for (int i = 0; i <= rows - 1; i++)
                {
                    HyperLink MyLink = new HyperLink();
    
                    //Set the Hyperlink Text and ID properties.
                    MyLink.Text = "YOUR TEXT";
                    MyLink.ID = "Link Id";
                    // Add a spacer in the form of an HTML <br /> element.
                    Panel1.Controls.Add(new LiteralControl("<br />"));
                    Panel1.Controls.Add(MyLink);
                }
    

    【讨论】:

    • 不,您的代码不起作用。 LinkBut​​ton 之前仍然出现任何标记(文字控件)。所以它们不会按顺序出现。
    • 好的,我找到了原因。我将 LinkBut​​ton 位置设置为绝对位置。在这里使用 LiteralControl 也很有帮助。如果您添加评论,我会支持您并接受您的回答,因为将您的代码与我的代码进行比较有助于我找到原因。
    • 另外,请从您的答案中删除不需要的信息:例如MyLink.ID = admission.Rows[i][0].ToString(); username = admission.Rows[i][3].ToString(); string Refno = HttpUtility.UrlEncode(Encrypt(admission.Rows[i][0].ToString()));
    猜你喜欢
    • 2012-04-18
    • 1970-01-01
    • 2019-01-06
    • 1970-01-01
    • 2019-02-18
    • 1970-01-01
    • 1970-01-01
    • 2019-02-17
    • 2019-12-29
    相关资源
    最近更新 更多