Причудливый скрытый персонаж в цикле Razor MVC3 - PullRequest
2 голосов
/ 08 декабря 2011

У меня есть цикл

<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 ]

5 голосов
/ 08 декабря 2011

Вы обнаружили спецификацию, знак порядка байтов.Он сохраняется как первые байты в текстовых файлах, чтобы указать кодировку.

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

[EDIT]

Вы можете открыть файл с помощью Блокнота и «Сохранить как ...» как ANSI.Это удаляет спецификацию (и кодировку).

// 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 голос
/ 08 декабря 2011

Попробуйте скопировать текст и создать новый частичный вид.Вставьте его в блокнот и перестройте свою частичную часть, чтобы исключить этот символ, скрытый в частичной части, или просто загрузите его в двоичный редактор vs и найдите этот символ.Щелкните правой кнопкой мыши и откройте с помощью ... Затем выберите бинарный редактор.

...