内联代码被视为 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>
<% } } %>

内联代码被视为 ASPX 代码

在 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 + """/>"

如果不看到创建文本框的位置/方式,将很难找到解决方案。您可能也想发布它。