内联代码被视为 ASPX 代码
本文关键字:代码 ASPX | 更新日期: 2023-09-27 18:33:23
我有一个名为"txtNewSubComment"的asp TextBox控件。但是,由于我正在动态生成多个相同的文本框,因此我需要一种方法来保持它们的唯一性,以便我可以引用它们。我正在尝试执行以下操作:
<asp:TextBox ID="txtNewSubComment_<%=comment.Id %>" />
(不是整个代码块,但你明白了)
评论。Id 将返回与该文本框控件相关的唯一 int。我的问题是 aspx 似乎没有将内联代码 (<% %>) 作为内联代码读取,而是将其读取为 aspx。因此,它不是以 html 形式呈现为txtNewSubComment_1
(如果我设法进入该阶段而没有错误妨碍),而是将其呈现为txtNewSubComment_<%=comment.Id%>
尝试为按钮传入命令参数时遇到问题
文本框是通过 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>
<% } } %>
在 ASP.Net 4.0 中,Microsoft引入了控制 ID 生成方式的功能:
http://msdn.microsoft.com/en-us/library/system.web.ui.control.clientidmode%28v=vs.110%29.aspx
您正在查看设置为Predictable
ClientIDMode
。
控件本身应包含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>
如果要在代码隐藏中创建文本框,则不希望字符串如下所示:
<asp:TextBox ID="txtNewSubComment_<%=comment.Id %>" />
你会想要这样的东西:
Dim _value = 1
Dim _textBoxString2 As String = "<asp:TextBox ID=""" + _value + """/>"
如果不看到创建文本框的位置/方式,将很难找到解决方案。您可能也想发布它。