Html.Encode () не кодирует пробел - PullRequest
1 голос
/ 29 декабря 2008

На моем сайте asp.net-mvc у меня есть поле, которое обычно содержит строку (из базы данных), но может время от времени ничего не содержать. Поскольку IE не знает, как обрабатывать тег css "empty-cell", пустые ячейки таблицы должны быть заполнены символом & nbsp;
Я думал

Html.Encode(" ");

исправил бы это для меня, но, по-видимому, он просто возвращает "". Я мог бы реализовать эту логику следующим образом

Html.Encode(theString).Equals(" ")?" ":Html.Encode(theString);

Кроме того, можно было бы сделать не сокращение, если, честно говоря, оба варианта ужасны. Разве нет более читабельного, компактного способа размещения этого необязательного пространства?

Ответы [ 3 ]

5 голосов
/ 27 марта 2009

Может быть проще преобразовать " " в "\xA0", а затем безоговорочно Html.Encode результат:

s = (string.IsNullOrEmpty(s) || s.Trim()=="") ? "\xA0" : s;
Html.Encode(s);

Шестнадцатеричный 00A0 определяет символ Unicode для неразрывного пробела, поэтому   является эквивалентом HTML-сущности для  .

Если у вас есть какой-либо контроль над базой данных, вы можете преобразовать пустые поля или поля с одним пробелом в это значение "\xA0", что полностью устранит условие.

2 голосов
/ 29 декабря 2008

Пробел в HTML - это просто пробел. nbsp может выглядеть как пробел, но имеет другую семантику, «неразрывная» означает, что разрывы строк подавляются.

Решение: всякий раз, когда я обнаруживаю, что функциональность отсутствует или имеет непредвиденное поведение (например, asp: Label и HyperLink не кодируют HTML), я пишу свой собственный класс утилит, который делает, как я говорю;)

public class MyHtml
{
    public static string Encode(string s)
    {
        if (string.IsNullOrEmpty(s) || s.Trim()=="")
            return "& nbsp;";
        return Html.Encode(s);
    }
}
0 голосов
/ 29 декабря 2008

Вы должны найти другой способ заполнить пустую ячейку. HTML-кодировка пробела для себя вполне допустима. Если вам нужно что-то еще, вы можете использовать экранирование URL или использовать свой собственный метод для генерации контента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...