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

5
我将解释我想要实现的内容:
我想要创建尽可能多的控件,通过在代码后台中使用循环来创建它们。在使用PHP时,我可以通过混合PHP代码和HTML代码来做到这一点。这使我能够动态生成实际的HTML标签。
在ASP.NET中,我还没有找到复制此功能的方法。
我考虑在代码后台的Init()函数上使用循环来创建一个新对象数组,并设置它们的属性,希望它被传递到aspx文件中,但它没有起作用。
我该如何做到这一点?
4个回答

10
如果你想创建动态 ASP.Net 超链接控件,你可以简单地这样做:
HyperLink hyp = new HyperLink();
    hyp.ID = "hypABD";
    hyp.NavigateUrl = "";
    Page.Controls.Add(hyp);

通过这段代码创建了超链接,但是它没有名称,如何为超链接指定文本? - anandd360

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

e.g.

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

希望这能为您提供足够的背景知识。
编辑:您可以在循环中使用上述代码,并用来自数据库/对象的值替换固定值。

4
请记住,ASP.Net中的Hyperlinks和LinkButtons之间存在区别。如果您只想要超链接,可以通过创建HyperLink对象、创建新对象,然后将它们添加到某个控件的Controls集合(如panel或span等)来创建任意数量的超链接。
LinkButtons有些不同。如果您想创建一个回传到服务器的链接,必须使用Repeater控件。(您并不需要这样做,但是另一种方法是一种hack job。)
Hyperlinks也可以通过使用Repeater控件来创建,如果可能的话,这是我推荐的方法。

4

在asp.net中有许多种方法可以实现这一点:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接