Извлекать обычный текст из строки при извлечении из самой базы данных (необходимо избегать всех шрифтов и стилей) - PullRequest
1 голос
/ 13 марта 2019

У меня в БД "Ожидается выдающаяся выдающаяся экономическая дата окончания" (это копия, вставленная некоторым шрифтом).Но когда я получаю его на html-странице, его показывается, как показано ниже.

 <label class="control-label table_cell" >
                                <span>Expected Outstanding&nbsp;On&nbsp;Economical End Date</span>
                            </label>

Но когда я вручную обновляю его с помощью плоского текста, он идет правильно.

<label class="control-label table_cell" `enter code here`>
                            <span>Expected Outstanding On Economical End Date</span>
                        </label>

Как преобразовать это вплоский текст без каких-либо шрифтов и стилей при получении из базы данных?

1 Ответ

0 голосов
/ 13 марта 2019

Как сказал @kowsikbabu, &nbsp; - это HTML-сущность для неразрывного пробела. Это специальный символ, который при рендеринге выглядит как пробел, но не допускает разрыв, как пробел при переносе.

Я не уверен, как это закончилось в ваших данных в первую очередь. Это, наверное, первое место, которое вы должны посмотреть. Тем не менее, независимо от того, что вы используете для обновления значения позже, он понимает сущность HTML и обрабатывает ее как пробел после отправки данных. Итак, после вашего обновления сущности &nbsp; были буквально заменены обычными пробелами.

Теперь, когда вы печатаете его в представлении, Razor фактически экранирует HTML по умолчанию, чтобы предотвратить внедрение скрипта и другие неприятные действия такого рода. Другими словами, на самом деле получает печать в источнике:

Expected Outstanding&amp;nbsp;On&amp;nbsp;Economical End Date

HTML-сущность &amp; соответствует символу &, поэтому при отображении браузером вы получаете:

Expected Outstanding&nbsp;On&nbsp;Economical End Date

Чтобы предотвратить это в Razor, вы можете использовать @Html.Raw(Model.Property), который будет печатать строку без экранирования, позволяя символам &nbsp; проходить в исходном коде, что позволит браузеру правильно отображать их как пробелы .

Длинно и коротко, если вы не можете управлять сущностями HTML, заканчивающимися на значении, тогда используйте @Html.Raw, чтобы отобразить значение, и все будет в порядке. В противном случае, если вы не хотите, чтобы значение фактически разрешало HTML, вам нужно выяснить, почему оно вообще туда попало, и исправить это.

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