Em IHtmlStringvez 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 ( IHtmlStringou 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 ViewModelpara obter valores para sua visualização (e novamente, de preferência usando IHtmlStringcomo 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.Rawdeve ajudar.