Zamiast tego powinieneś użyć 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>");
Kiedykolwiek masz właściwości modelu lub zmienne, które muszą przechowywać HTML, uważam, że jest to ogólnie lepsza praktyka. Przede wszystkim jest nieco czystszy. Na przykład:
@Html.Raw(str)
W porównaniu do:
@str
Uważam również, że jest to trochę bezpieczniejsze niż używanie @Html.Raw()
, ponieważ obawa, czy dane są w formacie HTML, jest przechowywana w kontrolerze. W środowisku, w którym masz programistów front-end i back-end, twoi programiści zaplecza mogą być bardziej dostrojeni do tego, jakie dane mogą przechowywać wartości HTML, zachowując w ten sposób ten problem na zapleczu (kontrolerze).
Generalnie staram się unikać używania, Html.Raw()
gdy tylko jest to możliwe.
Jeszcze jedna rzecz, na którą warto zwrócić uwagę, to to, że nie jestem pewien, gdzie przypisujesz str
, ale kilka rzeczy, które dotyczą mnie, jak możesz to wdrażać.
Po pierwsze, należy to zrobić w kontrolerze, niezależnie od rozwiązania ( IHtmlString
lub Html.Raw
). Uważasz, że powinieneś unikać takiej logiki, ponieważ tak naprawdę do niej nie należy.
Ponadto powinieneś używać swojego ViewModel
do pobierania wartości do widoku (i ponownie, najlepiej IHtmlString
jako typu właściwości). Widzenie czegoś takiego @Html.Encode(str)
jest trochę niepokojące, chyba że robiłeś to tylko po to, aby uprościć swój przykład.
Html.Raw
powinienem pomóc.