Sie sollten IHtmlString
stattdessen verwenden:
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>");
Wenn Sie Modelleigenschaften oder Variablen haben, die HTML enthalten müssen, ist dies meiner Meinung nach im Allgemeinen eine bessere Vorgehensweise. Erstens ist es etwas sauberer. Beispielsweise:
@Html.Raw(str)
Verglichen mit:
@str
Ich denke auch, dass es ein bisschen sicherer @Html.Raw()
ist als die Verwendung , da die Sorge, ob Ihre Daten HTML sind, in Ihrem Controller gespeichert bleibt. In einer Umgebung, in der Sie Front-End- und Back-End-Entwickler haben, sind Ihre Back-End-Entwickler möglicherweise besser auf die Daten abgestimmt, die HTML-Werte enthalten können, sodass dieses Problem im Back-End (Controller) verbleibt.
Ich versuche generell zu vermeiden, Html.Raw()
wann immer möglich.
Eine andere erwähnenswerte Sache ist, dass ich nicht sicher bin, wo Sie sie zuweisen str
, aber ein paar Dinge, die mich betreffen, wie Sie dies möglicherweise umsetzen.
Dies sollte zunächst in einem Controller erfolgen, unabhängig von Ihrer Lösung ( IHtmlString
oder Html.Raw
). Sie sollten eine solche Logik aus Ihrer Sicht vermeiden, da sie dort nicht wirklich hingehört.
Darüber hinaus sollten Sie Ihre verwenden ViewModel
, um Werte für Ihre Ansicht zu erhalten (und idealerweise auch IHtmlString
als Eigenschaftstyp verwenden). So etwas zu sehen @Html.Encode(str)
ist ein wenig besorgniserregend, es sei denn, Sie haben dies nur getan, um Ihr Beispiel zu vereinfachen.
Html.Raw
sollte helfen.