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