如何在ASP.NET中动态创建新的超链接?

时间:2009-06-04 00:16:58

标签: c# .net asp.net visual-studio hyperlink

我会解释我想要实现的目标:

我希望有一种情况,我可以通过在后面的代码中的循环中创建它们来创建任意数量的控件。我可以在使用PHP时通过混合PHP代码和HTML代码来实现这一点。这允许我动态生成实际的HTML标记。

在ASP.NET中,我还没有找到复制此功能的方法。

我已经考虑过在代码中使用一个类似于Init()函数的循环来创建一个new()对象数组,设置它们的属性并希望它被传递到aspx文件中,但它没有'工作。

我该怎么做?

4 个答案:

答案 0 :(得分:9)

如果您想创建动态ASP.Net超链接控件 你可以这样做:

HyperLink hyp = new HyperLink();
    hyp.ID = "hypABD";
    hyp.NavigateUrl = "";
    Page.Controls.Add(hyp);

答案 1 :(得分:4)

好吧,请记住,ASP.Net中的超链接和LinkBut​​tons之间存在差异

如果您只想要超链接,可以通过创建HyperLink对象,创建新对象,然后将它们添加到某些控件的控件集合(如面板或跨度等)来创建任意数量的对象。

LinkBut​​tons有点不同。如果要创建回发到服务器的链接,则必须使用Repeater控件。 (好吧,你没有必要,但替代方案是黑客工作。)

也可以使用Repeater控件创建超链接,如果可能的话,我建议采用这种方法。

答案 2 :(得分:4)

在asp.net中有很多方法可以做到这一点:

  1. 如果你真的想,你可以使用<% %>标签直接将循环放入aspx标记,就像使用php或经典asp一样。这是推荐。
  2. 您可以在表单上放置占位符或面板控件,在后面的代码中创建任意数量的超链接控件或锚标签,并将它们添加到占位符的控件集合中。这有点好,但仍然不是最佳的。
  3. 您可以在页面上放置合理数量的超链接控件,默认情况下将其visible属性设置为false,并“启用”您需要的属性。这比#2更受欢迎,因为asp.net页面生命周期有些奇怪。
  4. 这些链接来自某处,而某些地方通常是数据库或其他合理的数据源。因此,使其成为数据驱动 - 将该数据源绑定到控件,如转发器,网格视图,详细信息视图等。这可能是你最好的选择。

答案 3 :(得分:4)

如果你想动态生成控件&amp;不需要将那些PostBack添加到服务器(即,当单击/更改控件时,它将返回到同一页面) - 您可以使用 System.Web.UI.HtmlControls 中的控件命名空间。

e.g。

HtmlAnchor link = new HtmlAnchor();
link.href = "www.stackoverflow.com";
Page.Controls.Add(link);

希望这能给你足够的背景。

编辑:你可以在循环中使用上面的代码&amp;用来自数据库/对象的内容替换固定值。