0

我有一个基本的 asp 中继器,它生成 aul及其子lis。似乎每个li前面都有这个神奇的零空格字符 ( ​)。这会通过在每个列表项之间添加额外的空间来搞乱设计。

该代码目前在一个开发网站上,所以我不能给你一个链接。这是基本标记

<asp:Repeater ID="rptrPageMeta" runat="server">
<HeaderTemplate>
    <ul>
</HeaderTemplate>
<ItemTemplate>​
    <li>
    </li>
</ItemTemplate>
<FooterTemplate>
    </ul>
    <div class="clear"></div>
</FooterTemplate>
</asp:Repeater>

转发器有一个在 Presenter 中绑定到它的数据项列表。但在这个例子中,它是无关紧要的,因为每个项目都没有被渲染。这是它生成的:

<ul>
&#8203;
    <li>
    </li>&#8203;
    <li>
    </li>&#8203;
    <li>
    </li>&#8203;
    <li>
    </li>&#8203;
    <li>
    </li>&#8203;
    <li>
    </li>
</ul>

我想删除这个字符而不是做一个 CSS hack 来隐藏它。我试图通过将所有代码放在一行中来删除文件中的所有空格。这删除了那里的空白,但不会摆脱零空格字符。我还在记事本++中编辑了文件,显示了所有字符,但字符不存在。

有什么方法可以删除这个字符?

编辑:我确实创建了一个新项目,但无法重现此问题。我现在唯一可以假设的是它是由 Sitefinity 引起的。此代码用于 Sitefinity 5 CMS 内的小部件模板中。

Current Hack:我解决这个问题的方法是在特定列表中使用以下 js:

if ($('.my-list').length > 0) {
    $('.my-list').each(function() {
        $(this).html($(this).children('li'));
    });
}
4

2 回答 2

1

您从Repeater 控件发出此字符的错误假设开始。它不是。您的数据或源代码都包含该字符。

当然,您在 Visual Studio 中看不到该字符,因为它毕竟是零宽度的。尝试使用 Notepad++ 并将其配置为显示特殊字符。或者使用十六进制编辑器。

于 2012-06-04T14:58:50.250 回答
0

在 ItemTemplate 中,将标签放在一起。

<ItemTemplate​&gt;<li></li><ItemTemplate>

于 2012-06-04T14:44:50.903 回答