Bạn nên sử dụng IHtmlString
thay thế:
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>");
Bất cứ khi nào bạn có các thuộc tính mô hình hoặc các biến cần giữ HTML, tôi cảm thấy đây là một cách thực hành tốt hơn. Trước hết, nó sạch hơn một chút. Ví dụ:
@Html.Raw(str)
So với:
@str
Ngoài ra, tôi cũng nghĩ rằng nó an toàn hơn một chút so với việc sử dụng @Html.Raw()
, vì mối quan tâm về việc dữ liệu của bạn có phải là HTML được giữ trong bộ điều khiển của bạn hay không. Trong một môi trường mà bạn có các nhà phát triển front-end so với back-end, các nhà phát triển back-end của bạn có thể hòa hợp hơn với những dữ liệu nào có thể chứa các giá trị HTML, do đó giữ mối quan tâm này trong back-end (controller).
Tôi thường cố gắng tránh sử dụng Html.Raw()
bất cứ khi nào có thể.
Một điều đáng chú ý khác, là tôi không chắc bạn đang chỉ định ở đâu str
, nhưng có một số điều khiến tôi quan tâm là cách bạn có thể thực hiện điều này.
Đầu tiên, điều này nên được thực hiện trong bộ điều khiển, bất kể giải pháp của bạn ( IHtmlString
hoặc Html.Raw
). Bạn nên tránh bất kỳ logic nào như thế này theo quan điểm của bạn, vì nó không thực sự thuộc về đó.
Ngoài ra, bạn nên sử dụng của bạn ViewModel
để nhận các giá trị cho chế độ xem của bạn (và một lần nữa, lý tưởng IHtmlString
là sử dụng làm loại thuộc tính). Nhìn thấy một cái gì đó giống như @Html.Encode(str)
là một chút lo lắng, trừ khi bạn làm điều này chỉ để đơn giản hóa ví dụ của bạn.
Html.Raw
nên giúp đỡ.