我有一个名为“txtNewSubComment”的asp TextBox控件。但是,因为我动态生成多个相同的文本框,所以我需要一种方法来保持它们的唯一性,以便我可以引用它们。我正在尝试执行以下操作:
<asp:TextBox ID="txtNewSubComment_<%=comment.Id %>" />
(不是整个代码块,但你明白了)
comment.Id将返回与该TextBox控件相关的唯一int。我的问题是aspx似乎没有将内联代码(&lt; %%&gt;)作为内联代码读取,而是将其作为aspx读取。因此,不是将其作为txtNewSubComment_1
在html中呈现(如果我设法进入该阶段而没有错误妨碍),则呈现为txtNewSubComment_<%=comment.Id%>
尝试为按钮传递CommandArgument时遇到问题
文本框是通过aspx标记中的以下代码生成的:
<% Site.BO.Comment[] commentList = db.GetAllCommentsForImage(CurrentImage.Id);
if (commentList.Count() > 0)
{
foreach (Site.BO.Comment comment in commentList.OrderByDescending(x => x.LastUpdated))
{
Site.BO.Profile commenterProfile = db.ProfileGet(comment.User.Id); %>
<asp:TextBox ID="txtNewSubComment_<%=comment.Id %>" runat="server" TextMode="MultiLine"></asp:TextBox>
<% } } %>
答案 0 :(得分:0)
在ASP.Net 4.0中,Microsoft引入了控制ID生成方式的能力:
http://msdn.microsoft.com/en-us/library/system.web.ui.control.clientidmode%28v=vs.110%29.aspx
您正在查看ClientIDMode
设置为Predictable
。
控件本身应包含runat="server"
属性
<asp:Repeater ID="rptMeetings" DataSourceID="CommentsList" runat="server">
<ItemTemplate>
<asp:TextBox ID="txtNewSubComment_<%# this.Eval("Id") %>" runat="server" TextMode="MultiLine" ClientIDMode="Predictable"/>
</ItemTemplate>
</asp:Repeater>
答案 1 :(得分:-1)
如果您在后面的代码中创建文本框,则不希望字符串看起来像这样:
<asp:TextBox ID="txtNewSubComment_<%=comment.Id %>" />
你会想要这样的东西:
Dim _value = 1
Dim _textBoxString2 As String = "<asp:TextBox ID=""" + _value + """/>"
如果没有看到您在何处/如何创建文本框,将很难找到解决方案。你可能也想发布它。