【问题标题】:The server tag is not well formed, ASP Repeater Datasource服务器标签格式不正确,ASP 中继器数据源
【发布时间】:2012-06-15 02:11:44
【问题描述】:

我收到解析器错误消息 The server tag is not well formated for the following line.

                    <asp:Repeater runat="server" DataSource="<%# ((MultilistField)((Item)Container.DataItem).Fields["Tags"]).GetItems() %>">
                    <ItemTemplate>
                        <sc:FieldRenderer ID="FieldRenderer1" runat="server" FieldName="Tag name" Item="<%# Container.DataItem %>"/>
                    </ItemTemplate>
                    <SeparatorTemplate>
                        /
                    </SeparatorTemplate>
                </asp:Repeater>

语法看起来不错,但我不确定的一件事是您是否可以在其中使用 ".Field["tags"] 元素。

我已经尝试查找它,但找不到类似的问题。我希望有人能告诉我解析器为什么抱怨这条线。

谢谢

【问题讨论】:

  • 尝试对数据源使用单引号而不是双引号。

标签: asp.net


【解决方案1】:

我现在想到的是使用单引号字符串:

<asp:Repeater runat="server" DataSource='<%# ((MultilistField)((Item)Container.DataItem).Fields["Tags"]).GetItems() %>' >

【讨论】:

  • 你们太神奇了!不敢相信我没试过。我尝试将内部双引号更改为单引号,但这不起作用。谢谢大家!
  • @STi88 - 这是因为单引号在 C#/VB.NET 中不是有效的字符串分隔符。
  • @Oded 是的,你是对的,我只是急切地想要一个解决方案......简直不敢相信外面的单引号滑过我的想法。
【解决方案2】:

属性中有双引号。这会使解析器感到困惑——它无法判断属性的结束位置。

将属性用单引号括起来以修复它:

DataSource='<%# ((MultilistField)((Item)Container.DataItem).Fields["Tags"]).GetItems() %>'

【讨论】:

    【解决方案3】:

    尝试 ' 而不是 " 它可能会起作用

    否则尝试从后面的代码绑定

    <asp:Repeater runat="server" DataSource='<%# ((MultilistField)((Item)Container.DataItem).Fields["Tags"]).GetItems() %>' >
    

    【讨论】:

      【解决方案4】:

      你有结束标签吗?即

      </asp:Repeater>
      

      否则,您的标签声明末尾会缺少 /。

      <asp:Repeater runat="server" DataSource="<%# ((MultilistField)((Item)Container.DataItem).Fields["Tags"]).GetItems() %>" />
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-10-15
        • 2012-12-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多