MVC3 Razor循环中奇怪的隐藏角色

时间:2011-12-07 21:56:07

标签: asp.net-mvc-3 unicode razor renderpartial

我有一个循环

<ul id="news-list" class="thumbobs-list">
    @foreach (var item in Model.News) {
        @Html.Partial("RenderNews/" + item.TypeString, item)
    }
</ul>

使用像这样的部分

@model Web.Models.DataModel.NewsItem
@{ Layout = null; }
<li class="news-item @Model.TypeString.ToLower()" id="id-@Model.Id">
   <h3 class="headline">
     Example News headline.
   </h3>
   <p class="timestamp">@Model.TimeString</p>
</li>

效果很好

但是当我使用css进行样式时遇到了导致问题的隐藏空白字符

在每个部分空间前面,U + FEFF和另一个空间导致设计问题。

有没有人见过这个?

2 个答案:

答案 0 :(得分:5)

您已发现BOM,字节顺序标记。它存储为文本文件中的第一个字节以指示编码。

http://en.wikipedia.org/wiki/Byte_order_mark

[编辑]

您可以使用记事本打开文件,并将“另存为...”打开为ANSI。这将删除BOM(和编码)。

// reading a text file as binary will include the BOM flag
FileStream FS = new FileStream(MapPath(@"~\Text\TestUTF8.txt"), FileMode.Open);

byte[] Data = new byte[100];

FS.Read(Data, 0, 100);  // BOM is in the data
FS.Close();

// get rid of the BOM
String String1 = System.Text.Encoding.UTF8.GetString(Data);

// reading a text file as text will automatically handle it.
String String2 = File.ReadAllText(MapPath(@"~\Text\TestUTF8.txt"));

答案 1 :(得分:1)

尝试复制文本并创建新的局部视图。将其粘贴到记事本中并重建部分以排除隐藏在部分中的此字符,或者只是将其加载到vs二进制编辑器上并查找该字符。右键单击并打开...然后选择二进制编辑器。