Vous devriez utiliser à la IHtmlString
place:
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>");
Chaque fois que vous avez des propriétés de modèle ou des variables qui doivent contenir du HTML, je pense que c'est généralement une meilleure pratique. Tout d'abord, c'est un peu plus propre. Par exemple:
@Html.Raw(str)
Par rapport à:
@str
De plus, je pense aussi que c'est un peu plus sûr que d'utiliser @Html.Raw()
, car le souci de savoir si vos données sont HTML est conservé dans votre contrôleur. Dans un environnement où vous avez des développeurs front-end vs back-end, vos développeurs back-end peuvent être plus en phase avec les données pouvant contenir des valeurs HTML, gardant ainsi cette préoccupation dans le back-end (contrôleur).
J'essaie généralement d'éviter d'utiliser Html.Raw()
autant que possible.
Une autre chose à noter, c'est que je ne sais pas où vous attribuez str
, mais quelques points qui me préoccupent quant à la façon dont vous pourriez l'implémenter.
Tout d'abord, cela doit être fait dans un contrôleur, quelle que soit votre solution ( IHtmlString
ou Html.Raw
). Vous devriez éviter toute logique comme celle-ci à votre avis, car elle n'y appartient pas vraiment.
De plus, vous devriez utiliser votre ViewModel
pour obtenir des valeurs dans votre vue (et encore une fois, idéalement en utilisant IHtmlString
comme type de propriété). Voir quelque chose comme @Html.Encode(str)
est un peu inquiétant, à moins que vous ne le fassiez juste pour simplifier votre exemple.
Html.Raw
devrait aider.