C# 如何动态添加HTML元素(ASP.NET)

C# 如何动态添加HTML元素(ASP.NET),c#,asp.net,vb.net,C#,Asp.net,Vb.net,我正在动态创建链接按钮: Lnk1 Lnk2 我想在它们之间动态添加一个文本(或任何HTML元素),例如: Lnk1 Seperator Lnk2 Sepeperator 这是我的密码: for (int i=0;i<10;i++) { form1.Controls.Add(lnks[i]); Response.Write("Seperator<br>"); } for(inti=0;i尝试使用它作为参考。在我过去的项目中它的工作

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

Lnk1

Lnk2

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

Lnk1
Seperator
Lnk2
Sepeperator
这是我的密码:

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

for(inti=0;i尝试使用它作为参考。在我过去的项目中它的工作代码

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);
            }

for(inti=0;i尝试使用它作为参考。在我过去的项目中它的工作代码

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);
            }

用于(int i=0;i看看这种方法。你的思路是正确的,但你需要考虑表单本身。表单有一个名为控件的集合属性。如果你在for循环中实例化控件,你可以有效地按顺序添加每个控件。首先,创建LinkButton实例并分配它的属性。然后,创建什么任何您想要使用的分隔符控件。我在本例中使用了一个HtmlGenericControl,它允许我们分配一个文本属性(分隔符)。请注意,为了匹配您的示例,我从1开始循环,而不是从零开始循环…希望这会有所帮助

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");
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Web;
使用System.Web.UI;
使用System.Web.UI.HTMLControl;
使用System.Web.UI.WebControl;
公共部分类\u默认值:System.Web.UI.Page
{
受保护的无效页面加载(对象发送方、事件参数e)
{
对于(int i=1;i<11;i++)
{
LinkButton LinkButton=新建LinkButton();
linkButton.Text=“Lnk”+i;
链接按钮。单击+=链接按钮\u单击;
表单1.控件.添加(链接按钮);
HtmlGenericControl p=新的HtmlGenericControl(“p”);
p、 InnerText=“分隔符”;
表1.对照品添加(p);
}
}
无效链接按钮\单击(对象发送者,事件参数e)
{
响应。重定向(“http://www.stackoverflow.com");
}
}

看看这种方法。你的思路是正确的,但你需要考虑表单本身。表单有一个名为控件的集合属性。如果你在for循环中实例化控件,你可以有效地按顺序添加每个控件。首先,创建LinkButton实例并分配它的属性。然后,创建任何这样的控件您要使用的分隔符控件的rt。在本例中,我使用了一个HtmlGenericControl,它允许我们分配(分隔符的)文本属性。请注意,为了匹配您的示例,我从1开始循环,而不是从零开始循环…希望这会有所帮助

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");
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Web;
使用System.Web.UI;
使用System.Web.UI.HTMLControl;
使用System.Web.UI.WebControl;
公共部分类\u默认值:System.Web.UI.Page
{
受保护的无效页面加载(对象发送方、事件参数e)
{
对于(int i=1;i<11;i++)
{
LinkButton LinkButton=新建LinkButton();
linkButton.Text=“Lnk”+i;
链接按钮。单击+=链接按钮\u单击;
表单1.控件.添加(链接按钮);
HtmlGenericControl p=新的HtmlGenericControl(“p”);
p、 InnerText=“分隔符”;
表1.对照品添加(p);
}
}
无效链接按钮\单击(对象发送者,事件参数e)
{
响应。重定向(“http://www.stackoverflow.com");
}
}

no您的代码无效。仍然有任何标记(文字控件)出现在LinkButton之前。因此它们不会按顺序出现。好的,我找到了原因。我正在将LinkButton位置设置为绝对。在这里使用LiteralControl也非常有用。如果您添加注释,我将向上投票,并接受您的答案,因为比较您的代码和我的代码有助于我找到原因。另外,请删除不必要的info从您的答案来看:比如
MyLink.ID=admission.Rows[i][0].ToString();username=admission.Rows[i][3].ToString();string Refno=HttpUtility.UrlEncode(加密(admission.Rows[i][0].ToString());
no您的代码不起作用。还有任何标记(文字控件)出现在LinkButton之前。因此它们不会按顺序出现。好的,我找到了原因。我正在将LinkButton位置设置为绝对。在这里使用LiteralControl也非常有用。如果您添加注释,我将向上投票,并接受您的答案,因为比较您的代码和我的代码有助于我找到原因。另外,请删除不必要的info根据您的回答:比如
MyLink.ID=admission.Rows[i][0].ToString();username=admission.Rows[i][3].ToString();string Refno=HttpUtility.UrlEncode(加密(admission.Rows[i][0].ToString())
nice info+1.我将你的答案挂起了。因为HtmlGenericControl似乎适合我的需要。我需要添加标记并更改它们的样式。Literalcontrol对象没有样式属性。为了公平起见,下面的答案很有帮助,应该被否决。所以请向上投票。它不会让我向上投票。@SNash。我听到了。我听到了没有投票否决另一个答案。(我个人不太喜欢这个问题。大多数人都在尽力提供帮助,也不太在意声望。)我确实继续向上投票,因为你觉得它很有用。尼斯信息+1。我将接受的答案挂到了你的答案上。因为HtmlGenericControl似乎适合我的需要。我需要添加标记并更改它们的样式。Literalcontrol对象没有样式属性。为了公平起见,下面的答案很有用,应该向下投票。所以请向上投票e it.它不让我投票。@SNash.我听到了。我没有投票反对另一个答案。(我个人不太喜欢这个答案。大多数人都试图帮助别人,也不太关心声誉积分。)我确实投票了,因为你觉得它很有帮助。