ASP.NET页面中的内联编码

时间:2009-07-17 13:29:10

标签: c# asp.net

大家好,我在我的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

我该如何实现

4 个答案:

答案 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字符必须是字母数字或下划线。

HTML Reference

  

ID和NAME令牌必须以a开头   信([A-Za-z]),可以遵循   任意数量的字母,数字   ([0-9]),连字符(“ - ”),下划线   (“_”),冒号(“:”)和句号   ( “”)。

ASP.NET Reference

  

注意:只有组合   字母数字字符和   下划线字符(_)有效   此属性的值。包含   空格或其他无效字符   将导致ASP.NET页面解析器   错误。