我会解释我想要实现的目标:
我希望有一种情况,我可以通过在后面的代码中的循环中创建它们来创建任意数量的控件。我可以在使用PHP时通过混合PHP代码和HTML代码来实现这一点。这允许我动态生成实际的HTML标记。
在ASP.NET中,我还没有找到复制此功能的方法。
我已经考虑过在代码中使用一个类似于Init()函数的循环来创建一个new()对象数组,设置它们的属性并希望它被传递到aspx文件中,但它没有'工作。
我该怎么做?
答案 0 :(得分:9)
如果您想创建动态ASP.Net超链接控件 你可以这样做:
HyperLink hyp = new HyperLink();
hyp.ID = "hypABD";
hyp.NavigateUrl = "";
Page.Controls.Add(hyp);
答案 1 :(得分:4)
好吧,请记住,ASP.Net中的超链接和LinkButtons之间存在差异
如果您只想要超链接,可以通过创建HyperLink对象,创建新对象,然后将它们添加到某些控件的控件集合(如面板或跨度等)来创建任意数量的对象。
LinkButtons有点不同。如果要创建回发到服务器的链接,则必须使用Repeater控件。 (好吧,你没有必要,但替代方案是黑客工作。)
也可以使用Repeater控件创建超链接,如果可能的话,我建议采用这种方法。
答案 2 :(得分:4)
在asp.net中有很多方法可以做到这一点:
<% %>
标签直接将循环放入aspx标记,就像使用php或经典asp一样。这是不推荐。visible
属性设置为false,并“启用”您需要的属性。这比#2更受欢迎,因为asp.net页面生命周期有些奇怪。答案 3 :(得分:4)
如果你想动态生成控件&amp;不需要将那些PostBack添加到服务器(即,当单击/更改控件时,它将返回到同一页面) - 您可以使用 System.Web.UI.HtmlControls 中的控件命名空间。
e.g。
HtmlAnchor link = new HtmlAnchor();
link.href = "www.stackoverflow.com";
Page.Controls.Add(link);
希望这能给你足够的背景。
编辑:你可以在循环中使用上面的代码&amp;用来自数据库/对象的内容替换固定值。