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)
этого немного беспокоит, если только вы не делали это только для упрощения своего примера.
Html.Raw
должно помочь.