如何动态分配asp.net控件ID

时间:2010-05-10 10:20:30

标签: asp.net

我想在asp.net网络表单中执行以下操作,但收到无效令牌错误消息:

<ul>
    <%foreach (var item in Items) {%>
    <li>
      <asp:TextBox ID="<%= item.Id  %>" runat="server" />
    </li>
    <%} %>
</ul>

有哪些替代方法可以达到预期效果?

2 个答案:

答案 0 :(得分:4)

服务器端控件(即具有runat="server"的控件)必须在编译时设置ID(因为ID用于命名表示控件的成员字段)。

或者:

  • 使用某种形式的转发器控件(即创建控件集合)和数据绑定来填充。
  • 直接创建HTML(即不是服务器端控件)。

在ASP.NET中,前者是常见的,ASP.NET MVC后者(通过HTML Helpers)是常见的。

答案 1 :(得分:0)

尝试以下方法: -

    foreach (Item item in items) 
    {
       TextBox txtBox=new TextBox();
       txtBox.ID=item.ID;
       placeHolder.Controls.Add(txtBox);
    }

另外请确保您没有像(“ - ”)这样的无效字符,有时会给您带来麻烦。