Вместо этого вы должны использовать 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 хранится в вашем контроллере. В среде, где у вас есть интерфейсные и back-end разработчики, ваши сторонние разработчики могут быть более точно совместимы с тем, какие данные могут содержать значения HTML, тем самым сохраняя эту проблему во внутреннем (контроллере).
Обычно я стараюсь избегать использования Html.Raw()
, когда это возможно.
Еще одна вещь, которую стоит отметить, я не уверен, где вы назначаете str
, но несколько вещей, которые касаются мне, как вы можете это реализовать.
Во-первых, это должно быть сделано в контроллере, независимо от вашего решения (IHtmlString
или Html.Raw
). Вы должны избегать такой логики, как это в своем представлении, поскольку она на самом деле не принадлежит.
Кроме того, вы должны использовать свой ViewModel
для получения значений для вашего представления (и снова, в идеале, используя IHtmlString
как тип свойства). Увидеть что-то вроде @Html.Encode(str)
немного относительно, если вы не делаете этого просто для упрощения своего примера.