C# 使用c将asp.net LinkButton添加到文本#

C# 使用c将asp.net LinkButton添加到文本#,c#,asp.net,tree,literals,asplinkbutton,C#,Asp.net,Tree,Literals,Asplinkbutton,我想在c#web表单应用程序的文本中添加一些asp.net linkbutton控件,如下所示: StringBuilder sb = new StringBuilder("<ul>"); sb.Append("<li>"); sb.AppendFormat("<asp:LinkButton runat='server' class='add-row' ID='BtnAdd' OnClick='BtnAdd_Click' CommandArgument='test'

我想在c#web表单应用程序的文本中添加一些asp.net linkbutton控件,如下所示:

StringBuilder sb = new StringBuilder("<ul>");
sb.Append("<li>");
sb.AppendFormat("<asp:LinkButton runat='server' class='add-row' ID='BtnAdd' OnClick='BtnAdd_Click' CommandArgument='test'>{0}</asp:LinkButton>", "Text on the link");
sb.Append("</li></ul>");
this.Literal.Text = sb.ToString();`
我尝试了这些,并且成功地将linkbutton添加到文本中。但是linkbutton没有转换成

我想使用
标记创建一棵树,其中叶子作为链接按钮。
如果有人能解释这个问题的解决方案,那将非常有帮助。

正如Andrei所建议的那样,以这种方式使用链接按钮将不起作用

我在过去使用过类似的解决方案,为文本中的每个a标记创建一个查询参数,并重定向到当前页面或其他页面,然后从中提取查询参数


不过,我建议您首先尝试一下,看看是否有其他方法来完成您正在尝试的工作,因为文字解决方案最终会非常混乱,代码也非常繁重。

正如Andrei所建议的那样,以这种方式使用链接按钮将不起作用

我在过去使用过类似的解决方案,为文本中的每个a标记创建一个查询参数,并重定向到当前页面或其他页面,然后从中提取查询参数


不过,我建议您首先尝试一下,看看是否有其他方法来完成您正在尝试的工作,因为文字解决方案最终会变得非常混乱和代码繁重。

我认为
中继器更适合您的目的

<ul>
    <asp:Repeater ID="Repeater1" runat="server">
        <ItemTemplate>
            <li><asp:LinkButton ID="BtnAdd" runat="server" CssClass="add-row" OnClick="BtnAdd_Click">Text on the link</asp:LinkButton></li>
        </ItemTemplate>
    </asp:Repeater>
</ul>

我认为中继器更适合你的用途

<ul>
    <asp:Repeater ID="Repeater1" runat="server">
        <ItemTemplate>
            <li><asp:LinkButton ID="BtnAdd" runat="server" CssClass="add-row" OnClick="BtnAdd_Click">Text on the link</asp:LinkButton></li>
        </ItemTemplate>
    </asp:Repeater>
</ul>
如果您有单个

如果您有单个


这里正确的方法是通过WebControl api,而不是通过模板。 您的方法可能仅适用于HTML内容。 您需要做的是处理像OnInit这样的页面生命周期事件,获取对容器控件(this.MyPanel)的引用,并将项动态添加到该控件的子属性(this.MyPanel.children.add(new…)


建议的中继器解决方案不适用于树形结构数据源,适用于列表…

这里的正确方法是通过WebControl api,而不是通过模板。 您的方法可能仅适用于HTML内容。 您需要做的是处理像OnInit这样的页面生命周期事件,获取对容器控件(this.MyPanel)的引用,并将项动态添加到该控件的子属性(this.MyPanel.children.add(new…)


建议的Repeater解决方案不适用于树状结构数据源,但适用于列表…

如果您必须只使用一次asp:LinkButton,请按此方式执行


和在.cs文件中

LinkButton1.Text=CurrentListItemAbsoluteUrl;
LinkButton1.CommandArgument=CurrentListItemAbsoluteUrl;
public void LinkButton1\u单击(对象发送者,CommandEventArgs e)
{
e、 CommandEventArgs//以获取参数

如果您必须只使用一次asp:LinkButton,请按此方法操作


和在.cs文件中

LinkButton1.Text=CurrentListItemAbsoluteUrl;
LinkButton1.CommandArgument=CurrentListItemAbsoluteUrl;
public void LinkButton1\u单击(对象发送者,CommandEventArgs e)
{
e、 CommandEventArgs//以获取参数

服务器端控件不能添加为文本控件的文本或子控件。添加到文本控件的任何内容都被视为文本字符串,这就是为什么它被称为文本。您需要找到其他方法来执行任何您想做的事情。服务器端控件不能添加为文本控件的文本或子控件。添加到Li的任何内容teral控件被视为文本字符串,这就是为什么它被称为literal。您需要找到其他方法来执行任何您想执行的操作
<asp:LinkButton ID="BtnAdd" runat="server" CssClass="add-row" OnCommand="BtnAdd_Command" CommandArgument='<%# Eval("value") %>'>

protected void BtnAdd_Command(object sender, CommandEventArgs e)
{
     string commandArgument = e.CommandArgument.ToString();
}
BtnAdd.Id="";