【问题标题】:Inline code being taken as ASPX code内联代码被视为 ASPX 代码
【发布时间】:2014-12-05 12:01:18
【问题描述】:

我有一个名为“txtNewSubComment”的 asp TextBox 控件。但是,因为我动态生成多个相同的文本框,所以我需要一种方法来保持它们的唯一性,以便我可以引用它们。我正在尝试执行以下操作:

<asp:TextBox ID="txtNewSubComment_<%=comment.Id %>" />(不是整个代码块,但你明白了)

comment.Id 将返回与该 TextBox 控件相关的唯一 int。我的问题是 aspx 似乎没有将内联代码 () 读取为内联代码,而是将其读取为 aspx。因此,它不是在 html 中呈现为txtNewSubComment_1(如果我设法到达那个阶段而没有错误妨碍的话),而是呈现为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>

<% } } %>

【问题讨论】:

  • 你是如何动态创建它们的?它们在中继器/网格中吗?
  • 它们是在 aspx 代码中的 foreach 循环中生成的。
  • 是否可以将它们放在中继器中,您将为自己省去很多麻烦。
  • runat="server"装饰它
  • 有什么想法吗? OP 已更新。

标签: c# asp.net


【解决方案1】:

在 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>

【讨论】:

  • 根据您更新的问题,这应该对您有所帮助:stackoverflow.com/questions/6211583/… 您可以考虑动态创建控件;使用您的 Id 对数据源进行中继器控件或数据绑定
【解决方案2】:

如果您在后面的代码中创建文本框,您将不希望字符串看起来像这样:

<asp:TextBox ID="txtNewSubComment_<%=comment.Id %>" />

你会想要这样的:

Dim _value = 1
Dim _textBoxString2 As String = "<asp:TextBox ID=""" + _value + """/>"

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

【讨论】:

  • 原帖已编辑,应该有所帮助。它也是 c# 作为代码隐藏,而不是 vb.net。
猜你喜欢
  • 1970-01-01
  • 2017-12-08
  • 1970-01-01
  • 2010-09-10
  • 2023-04-07
  • 2021-08-16
  • 2019-11-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多