如何删除ASP Repeater生成的Zero Space Character()?

时间:2012-06-04 14:26:26

标签: c# asp.net sitefinity

我有一个基本的asp转发器,可生成ul及其子li。似乎每个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来隐藏它。我试图通过将所有代码放在一行来从文件中删除所有空格。这删除了那里的白色空间,但不会摆脱零空间字符。我还在notepad ++中编辑了文件,显示了所有字符,但字符不存在。

有什么方法可以删除这个角色?

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

当前黑客:我解决这个问题的方法是在特定列表中使用以下js:

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

2 个答案:

答案 0 :(得分:0)

在ItemTemplate中,让标签彼此相邻。

<ItemTemplate​><li></li><ItemTemplate>

答案 1 :(得分:0)

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

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