Ви повинні використовувати 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
мав би допомогти.