如何在ASP.NET中动态创建新的超链接?
我将解释我想要实现的目标:
我希望有一种情况,我可以通过在后面的代码中的循环中创建它们来创建任意数量的控件。 我可以在使用PHP时通过混合PHP代码和HTML代码来实现这一点。 这允许我动态生成实际的HTML标签。
在ASP.NET中,我还没有找到复制此function的方法。
我已经考虑过在代码中使用一个类似于Init()函数的循环来创建一个new()对象数组,设置它们的属性并希望它被传递到aspx文件中,但它不起作用。
我该怎么做呢?
如果你想创建动态ASP.Net超链接控件你可以简单地这样做:
HyperLink hyp = new HyperLink(); hyp.ID = "hypABD"; hyp.NavigateUrl = ""; Page.Controls.Add(hyp);
好吧,请记住,ASP.Net中的超链接和LinkButtons之间存在差异
如果您只想要超链接,可以通过创建HyperLink对象,创建新对象,然后将它们添加到某些控件的Controls集合(如面板或跨度等)来创建任意多个。
LinkButtons有点不同。 如果要创建回发到服务器的链接,则必须使用Repeater控件。 (嗯,你没有必要,但替代方案是黑客工作。)
也可以使用Repeater控件创建超链接,如果可能的话,我建议采用这种方法。
在asp.net中有很多方法可以做到这一点:
- 如果你真的想,你可以直接使用
<% %>
标签循环到aspx标记中,就像使用php或经典asp一样。 不建议这样做。 - 您可以在表单上放置占位符或面板控件,在后面的代码中创建任意数量的超链接控件或锚标记,并将它们添加到占位符的控件集合中。 这有点好,但仍然不是最佳的。
- 您可以在页面上放置合理数量的超链接控件,默认情况下将其
visible
属性设置为false,并“启用”您需要的那些。 这比#2更受欢迎,因为asp.net页面生命周期存在一些奇怪之处。 - 这些链接来自某个地方 ,而某些地方通常是数据库或其他合理的数据源。 因此,使其成为数据驱动 – 将该数据源绑定到控件,如转发器,网格视图,详细信息视图等。 这可能是您最好的选择。
如果你想动态生成控件而不需要将那些PostBack放到服务器上(即当点击/更改控件时,它将返回到同一页面) – 你可以使用System.Web.UI中的控件。 HtmlControls命名空间。
例如
HtmlAnchor link = new HtmlAnchor(); link.href = "www.stackoverflow.com"; Page.Controls.Add(link);
希望这能给你足够的背景。
编辑:您可以在循环中使用上面的代码并用来自数据库/对象的内容替换固定值。
- 将字符串解析为LINQ查询
- 使用SemanticResultKey时的TargetInvocationException
- 使用iTextSharp设置页边距
- LINQ to Entities无法识别方法’System.String Format
- 使用OAuth 2和服务帐户访问旧的GData API(电子表格API)
- Null-Coallescing运算符 – 为什么选择铸造?
- 使用generics类型’System.Collections.Generic.List ‘需要1个类型参数
- 在不使用IComparable 的情况下查找Max / Min元素
- 如何在运行时将属性级属性添加到TypeDescriptor?