服务器标记格式不正确,ASP Repeater数据源

5
我一直遇到解析器错误并收到以下消息:此行的服务器标记格式不正确。
                    <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”]”元素。
我试过查找,但没有找到类似的问题。希望有人能给我一些关于解析器为什么会抱怨这行代码的见解。
谢谢

1
尝试使用单引号而不是双引号来定义 DataSource。 - Jeremy
4个回答

13

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

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

你们太神奇了!我简直不敢相信我以前没试过这个方法。我尝试将内部的双引号改为单引号,但没有成功。非常感谢大家! - Jun Zheng
@STi88 - 这是因为在C# / VB.NET中,单引号不是有效的字符串分隔符。 - Oded
@Oded 是的,你是正确的,我只是急需解决方案... 无法相信我竟然漏掉了单引号。 - Jun Zheng

3

您在属性内部使用了双引号。这会让解析器混淆,不知道属性何时结束。

将属性用单引号包裹以解决此问题:

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

1

尝试使用单引号而不是双引号,可能会起作用

否则尝试从代码后台进行绑定

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

0
你有闭合标签吗?例如:

</asp:Repeater>

否则,您的标签声明末尾缺少 /。
<asp:Repeater runat="server" DataSource="<%# ((MultilistField)((Item)Container.DataItem).Fields["Tags"]).GetItems() %>" />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接