Muk*_*rma 86 c# asp.net asp.net-mvc asp.net-mvc-4
我有一个控制器,它生成包含html标记的字符串.现在,当我在视图上显示它时,它显示为包含所有标记的简单字符串.我试图使用Html帮助程序进行编码/解码以正确显示它,但它无法正常工作.
string str= "<a href="/Home/Profile/seeker">seeker</a> has applied to <a href="/Jobs/Details/9">Job</a> floated by you.</br>";
Run Code Online (Sandbox Code Playgroud)
在我看来,
@Html.Encode(str)
Run Code Online (Sandbox Code Playgroud)
Jar*_*red 155
你很想要使用 @Html.Raw(str)
@Html.Encode
接受字符串并确保正确处理所有特殊字符.这些包括空格等字符.
Jer*_*ose 34
你应该使用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>");
Run Code Online (Sandbox Code Playgroud)
每当你有模型属性或需要保存HTML的变量时,我觉得这通常是一种更好的做法.首先,它有点清洁.例如:
@Html.Raw(str)
Run Code Online (Sandbox Code Playgroud)
相比:
@str
Run Code Online (Sandbox Code Playgroud)
此外,我还认为它与使用相比更安全一些@Html.Raw()
,因为关注您的数据是否是HTML保存在您的控制器中.在您拥有前端开发人员和后端开发人员的环境中,您的后端开发人员可能更加关注哪些数据可以保存HTML值,从而在后端(控制器)中保持这种关注.
我一般尽量避免使用Html.Raw()
.
值得注意的另一件事是,我不确定你在哪里分配str
,但有些事情与我如何实现这一点有关.
首先,这应该在控制器中完成,无论您的解决方案(IHtmlString
或Html.Raw
)如何.你应该在你的视图中避免使用这样的逻辑,因为它并不属于那里.
此外,您应该使用您ViewModel
的方式获取视图的值(并且再次,理想情况下使用IHtmlString
属性类型).看到类似的东西@Html.Encode(str)
有点令人担忧,除非你这样做只是为了简化你的例子.
归档时间: |
|
查看次数: |
175198 次 |
最近记录: |