2009-06-04 79 views
3

我会解释我想达到什么样的效果:如何在ASP.NET中动态创建新的超链接?

我想要一个能够创建尽可能多的控件的情况,只需在后面的代码中创建一个循环。通过混合PHP代码和HTML代码,我可以在使用PHP时做到这一点。这使我可以动态生成实际的HTML标签。

在ASP.NET中,我还没有找到一种方法来复制此功能。我想过在Init()函数之类的代码中使用循环来创建new()对象的数组,并设置它们的属性并希望它传递到aspx文件,但它没有没有工作。

我该怎么做?

回答

9

如果你想创造动态ASP.Net超链接控制 你可以简单地这样做:

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

嗯,记住有一个在ASP.Net超链接和了LinkBut​​ton之间的差异

如果你只是想超链接,你可以通过创建一个超链接对象,创建新的对象,然后将创建只要你想尽可能多的他们到一些控制的控制集合,如面板或跨度或其他东西。

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

超链接也可以通过使用Repeater控件创建,如果可能的话,我会推荐的方法。

4

很多方法在asp.net做到这一点

  1. 如果你真的想,你可以直接使用<% %>标签进入ASPX标记,就像PHP或放环经典的asp。推荐使用而不是
  2. 您可以在表单上放置占位符或面板控件,根据需要在代码中创建尽可能多的超链接控件或锚点标签,并将它们添加到占位符的控件集合中。这有点更好,但仍然不是最佳的。
  3. 您可以在页面上放置合理数量的超链接控件,默认将它们的visible属性设置为false,并“启用”您需要的。由于asp.net页面生命周期存在一些不合理之处,所以这是首选#2。
  4. 这些链接来自某处,那地方通常是一个数据库或其他数据源合理。因此,使数据驱动—将该数据源绑定到像中继器,网格视图,细节视图或类似的控件。这可能是你最好的选择。
4

如果你想生成控件动态&并不需要有那些回发到服务器(即在单击控件时/改变,它会回到同一页) - 您可以使用控件System.Web.UI.HtmlControls命名空间。

例如

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

希望这给你足够的背景。

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