Dovresti IHtmlString
invece usare :
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>");
Ogni volta che hai proprietà del modello o variabili che devono contenere HTML, ritengo che questa sia generalmente una pratica migliore. Prima di tutto, è un po 'più pulito. Per esempio:
@Html.Raw(str)
Rispetto a:
@str
Inoltre, penso anche che sia un po 'più sicuro rispetto all'uso @Html.Raw()
, poiché la preoccupazione di sapere se i tuoi dati sono HTML è conservata nel tuo controller. In un ambiente in cui hai sviluppatori front-end e back-end, i tuoi sviluppatori back-end potrebbero essere più in sintonia con i dati che possono contenere valori HTML, mantenendo così questa preoccupazione nel back-end (controller).
In genere cerco di evitare di utilizzare Html.Raw()
quando possibile.
Un'altra cosa che vale la pena notare, è che non sono sicuro di dove stai assegnando str
, ma alcune cose che mi preoccupano di come potresti implementarlo.
Innanzitutto, questo dovrebbe essere fatto in un controller, indipendentemente dalla soluzione ( IHtmlString
o Html.Raw
). Dovresti evitare qualsiasi logica come questa dal tuo punto di vista, poiché in realtà non appartiene a lì.
Inoltre, dovresti usare il tuo ViewModel
per ottenere i valori dalla tua vista (e di nuovo, idealmente usando IHtmlString
come tipo di proprietà). Vedere qualcosa di simile @Html.Encode(str)
è un po 'preoccupante, a meno che tu non lo stia facendo solo per semplificare il tuo esempio.
Html.Raw
dovrebbe aiutare.