У меня есть приложение MVC3, на котором есть страница с подробностями. Как часть этого у меня есть описание (полученное из БД), которое имеет пробелы и новые строки. Когда он отображается, новые строки и пробелы игнорируются HTML. Я хотел бы закодировать эти пробелы и новые строки, чтобы они не игнорировались.
Как ты это делаешь?
Я пробовал HTML.Encode, но в итоге он отображал кодировку (и даже не на пробелах и новых строках, а на некоторых других специальных символах)
html
css
newline
whitespace
line-breaks
Дэн точечная сеть
источник
источник
Ответы:
Просто стилизуйте контент с помощью
white-space: pre-wrap;
.источник
white-space: pre-line;
если вы не хотите, чтобы первая строка каждого абзаца имела отступ.Вы пытались использовать
<pre>
тег.http://jsfiddle.net/NweRa/
источник
Вы можете использовать пробел: предварительная строка, чтобы сохранить разрывы строк при форматировании. Нет необходимости вручную вставлять HTML-элементы.
или добавьте в свой элемент HTML
style="white-space: pre-line;"
источник
Вы хотели бы заменить все пробелы с
&nbsp;
(неразрывный пробел) и все новые строки\n
с<<b></b>br>
(разрыв строки в HTML). Это должно достичь результата, который вы ищете.Что-то в этом роде.
источник
Я пробовал
white-space: pre-wrap;
технику, изложенную Питом, но если строка была непрерывной и длинной, она просто выбегала из контейнера и не деформировалась по какой-либо причине, у нее не было много времени для исследования ... но если у вас тоже есть та же проблема, я в конечном итоге с помощью<pre>
тегов и следующего CSS и все было хорошо, чтобы пойти ..источник
Как вы упомянули в ответе @Developer, я, вероятно, буду кодировать HTML при вводе пользователем. Если вы беспокоитесь о XSS, вам, вероятно, никогда не понадобится ввод пользователя в его оригинальной форме, поэтому вы можете также избегать его (и заменять пробелы и символы новой строки, пока вы там).
Обратите внимание, что экранирование при вводе означает, что вы должны либо использовать @ Html.Raw, либо создать MvcHtmlString для визуализации этого конкретного ввода.
Вы также можете попробовать
но я думаю, что это не ускользнет от пробелов. Так что в этом случае я предлагаю просто сделать .NET
на ввод пользователя. А если вы хотите глубже изучить юзабилити, возможно, вы можете выполнить анализ XML ввода пользователя (или поиграть с регулярными выражениями), чтобы разрешить только предопределенный набор тегов. Например, разрешить
... но не позволяю
источник
Оберните описание в
textarea
элемент.источник
Есть простой способ сделать это. Я попробовал это в моем приложении, и это работало довольно хорошо.
Просто введите: $ text = $ row ["text"]; echo nl2br ($ text);
источник