ASP.NET MVC中循环内使用@Html.Raw显示富文本的问题
问题描述
我在index.cshtml中有如下代码:
@foreach (var item in Model) { <p style="padding: 0; margin: 0"> @Html.DisplayFor(modelItem => item.Translation) </p> }
由于item.Translation字段是用TinyMCE富文本编辑器编辑的,我希望通过@Html.Raw显示原始富文本内容,预期效果为:
" He said: "Come", so it came. Then He said: "Go", so it went "
但实际得到的是转义后的HTML代码:
> <p>He said: <em>"Come"<em>, so it came. Then He said: "Go", so it > went<p>
我尝试了以下两种写法,均未解决问题:
写法1:
@foreach (var item in Model) { <p style="padding: 0; margin: 0"> @Html.Raw(modelItem => item.Translation) </p> }
写法2:
@foreach (var item in Model) { <p style="padding: 0; margin: 0"> @Html.Raw(Model.Translation) </p> }
请问如何正确使用@Html.Raw在循环中显示原始富文本内容?
正确解决方案
直接将循环中当前迭代项的Translation属性作为参数传入@Html.Raw即可,代码如下:
@foreach (var item in Model) { <p style="padding: 0; margin: 0"> @Html.Raw(item.Translation) </p> }
错误原因说明
- 第一种写法错误:给
Html.Raw传递了lambda表达式而非实际字段值,导致它把表达式本身当成内容输出,而非解析后的富文本。 - 第二种写法错误:循环中应该使用当前迭代的
item对象,而非直接访问集合Model的Translation属性——Model是整个集合,不存在该属性,会导致编译错误或空值输出。
内容的提问来源于stack exchange,提问作者Animimo
相关产品推荐
相关产品推荐

