大家好,我在我的aspx页面中使用此代码
<%for (int i=o;i<5;i++)
{%>
<asp: link button id=i text=i/>
<%}%>
它正在生成五个链接按钮,如
我就是我
但我只想要五个像这样的链接按钮
1 2 3 4 5
分别为id = 1,2,3,4,5
我该如何实现
答案 0 :(得分:7)
将占位符放在您想要链接的页面中:
<asp:PlaceHolder ID="LinkContainer" runat="server" />
在代码隐藏的Page_Load方法中,您将链接放在占位符中:
for (int i = 1; i <= 5; i++) {
LinkButton link = new LinkButton();
link.ID = "Link" + i.ToString();
link.Text = i.ToString();
LinkContainer.Controls.Add(link);
}
这样控件将在页面循环的早期创建,如果你愿意,可以将服务器端事件连接到它们。
(注意我在id中添加了一个前缀。拥有只有数字的id会在某些情况下导致问题。)
答案 1 :(得分:5)
这不是在ASP.Net中做事的最好方法。动态控件有很多陷阱,你刚刚找到其中一个。这段代码好一点(确保页面在某个时刻调用DataBind()):
<%for (int i=0;i<5;i++)
{%>
<asp:LinkButton id="<%# i%>" runat="server" text="<%#i%>" />
<%}%>
但你会发现事件和变化并没有按照你期望的方式连接起来,如果它起作用的话。只有五个,最好只需手动列出它们,事情就会越来越容易。或者,如果它们来自某个地方的数据源,则使用转发器并以这种方式创建它们。
真的,如果你能提供帮助,你根本不想将代码混合到你的aspx标记中。把它留给后面的代码!
答案 2 :(得分:2)
你需要在服务器端打印出I的值。
<%for (int i=o;i<5;i++) {%>
<ASP:LinkButton Id="<%# i%>" Text="<%# i %>" />
<%}%>
答案 3 :(得分:2)
你需要小心如何实际渲染它。请注意,根据规范,以数字开头的HTML ID是非法的。我会在id值前加一些字母字符,以确保它是合法的HTML,并且生成的控件ID对于ASP.NET是合法的。我不清楚是否合法使用控制ID的数值是否合法。请注意,ASP.NET控件ID字符必须是字母数字或下划线。
ID和NAME令牌必须以a开头 信([A-Za-z]),可以遵循 任意数量的字母,数字 ([0-9]),连字符(“ - ”),下划线 (“_”),冒号(“:”)和句号 ( “”)。
注意:只有组合 字母数字字符和 下划线字符(_)有效 此属性的值。包含 空格或其他无效字符 将导致ASP.NET页面解析器 错误。