Em IHtmlString
vez disso, você deveria usar :
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>");
Sempre que você tem propriedades ou variáveis de modelo que precisam conter HTML, sinto que geralmente é uma prática melhor. Em primeiro lugar, é um pouco mais limpo. Por exemplo:
@Html.Raw(str)
Comparado com:
@str
Além disso, também acho que é um pouco mais seguro do que usar @Html.Raw()
, já que a preocupação de saber se seus dados são HTML é mantida em seu controlador. Em um ambiente onde você tem desenvolvedores front-end vs. back-end, seus desenvolvedores back-end podem estar mais sintonizados com quais dados podem conter valores HTML, mantendo assim essa preocupação no back-end (controlador).
Geralmente tento evitar o uso, Html.Raw()
sempre que possível.
Outra coisa que vale a pena observar é que não tenho certeza para onde você está atribuindo str
, mas algumas coisas que me preocupam em como você pode estar implementando isso.
Primeiro, isso deve ser feito em um controlador, independentemente de sua solução ( IHtmlString
ou Html.Raw
). Você deve evitar qualquer lógica como essa em sua visão, pois ela realmente não pertence a ela.
Além disso, você deve usar seu ViewModel
para obter valores para sua visualização (e novamente, de preferência usando IHtmlString
como o tipo de propriedade). Ver algo assim @Html.Encode(str)
é um pouco preocupante, a menos que você esteja fazendo isso apenas para simplificar seu exemplo.
Html.Raw
deve ajudar.