Подтвердить что ты не робот

Отображать строку как html в asp.net mvc view

У меня есть контроллер, который генерирует строку, содержащую html markups.Now, когда я показываю ее на представлениях, она отображается как простая строка, содержащая все теги. Я пытался использовать хелпер Html для кодирования/декодирования, чтобы отображать его правильно, но он не работает.

string str= "<a href="/Home/Profile/seeker">seeker</a> has applied to <a href="/Jobs/Details/9">Job</a> floated by you.</br>";

В моих взглядах

@Html.Encode(str)
4b9b3361

Ответ 1

Вы близки, вы хотите использовать @Html.Raw(str)

@Html.Encode берет строки и гарантирует правильную обработку всех специальных символов. К ним относятся такие символы, как пробелы.

Ответ 2

Вместо этого вы должны использовать IHtmlString:

IHtmlString str = new HtmlString("<a href="/Home/Profile/seeker">seeker</a> has applied to <a href="/Jobs/Details/9">Job</a> floated by you.</br>");

Всякий раз, когда у вас есть свойства модели или переменные, которые должны содержать HTML, я считаю, что это, как правило, более совершенная практика. Прежде всего, это немного чище. Например:

@Html.Raw(str)

По сравнению с:

@str

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

Обычно я стараюсь избегать использования Html.Raw(), когда это возможно.

Еще одна вещь, которую стоит отметить, я не уверен, где вы назначаете str, но несколько вещей, которые касаются меня тем, как вы можете это реализовать.

Во-первых, это должно быть сделано в контроллере, независимо от вашего решения (IHtmlString или Html.Raw). Вы должны избегать такой логики, как это, на ваш взгляд, поскольку она на самом деле не принадлежит.

Кроме того, вы должны использовать ViewModel для получения значений в вашем представлении (и снова, в идеале используя IHtmlString в качестве типа свойства). Увидеть что-то вроде @Html.Encode(str) немного относительно, если вы не делаете этого просто для упрощения своего примера.

Ответ 3

вы можете использовать @Html.Raw(str)

Смотрите MSDN для более

Возвращает разметку, не закодированную в HTML.

Этот метод обертывает разметку HTML, используя класс IHtmlString, который отображает unencoded HTML.

Ответ 4

У меня была аналогичная проблема с полями ввода HTML в MVC. В веб-страничке показано только первое ключевое слово поля. Пример: поле ввода: "Быстрая коричневая лиса" Отображаемое значение: "The"

Разрешение заключалось в том, чтобы поместить переменную в кавычки в инструкции значения следующим образом:

<input class="ParmInput" type="text" id="respondingRangerUnit" name="respondingRangerUnit"
       onchange="validateInteger(this.value)" value="@ViewBag.respondingRangerUnit">