我在MVC 3和Asp.net C#中使用Razor。
我有一个包含以下代码的视图。 model.ContentBody
有一些HTML标记。
我需要将此HTML内容显示为已解码。
如何在视图中更改我的代码?
<div class="display-field">
@Html.DisplayFor(model => model.ContentBody)
</div>
答案 0 :(得分:72)
<div class="display-field">
@Html.Raw(Model.ContentBody)
</div>
此代码解决了问题!
答案 1 :(得分:43)
@Html.Raw
对我来说不起作用,例如: -
string name = "<p><span style="font-size: small; color: #ff0000;"><span style="font-size: small;">&nbsp;<span style="font-size: large; color: #000000;">Hi</span><br />&nbsp; <br />This is just a sample,<br />This will not work with @Html.Raw(),<br />";
<span>@Html.Raw(name);</span>
但这有效: -
@MvcHtmlString.Create(HttpUtility.HtmlDecode(@model.ContentBody))
或者您也可以使用: -
@Html.Raw(HttpUtility.HtmlDecode(@model.ContentBody));
答案 2 :(得分:7)
您还可以在将模型发送到视图之前解码控制器中的html,
<强> WebUtility.HtmlDecode()强>
public ActionResult Index(int id)
{
var content = _contentRepository.GetContent(id);
var classViewModel = new ClassViewModel
{
ContentBody = WebUtility.HtmlDecode(ClassViewModel.ContentBody)
};
return View(classViewModel);
}
答案 3 :(得分:2)
请使用解码时显示Html使用。
@MvcHtmlString.Create(@Model.OurVision)
答案 4 :(得分:1)
总结一下.. 在我的服务/控制器中,将模型返回到视图
....
Description = WebUtility.HtmlDecode(narration.Narration1)
我的cshtml,其中显示了tinyMCE ..只是定期绑定(我将HtmlAttributeHelper用于其他目的。您可以忽略它)
<div>
@Html.TextAreaFor(model => model.Description, HtmlAttributeHelper.ConditionalDisable(false, new {@class = "tinymce"}))
</div>
在显示数据的cshtml页面中。
......
<td class="col-word-wrap">@Html.Raw(HttpUtility.HtmlDecode(@item.Narration1))</td>
答案 5 :(得分:0)
将“ContentBody”作为MvcHtmlString传递给您的模型而不是字符串。
这样你就可以使用:
<div class="display-field">
@model.ContentBody
</div>
在您的控制器中获取MvcHtmlString只需使用:
MvcHtmlString myHtmlString = MvcHtmlString.Create("htmlcodeandtext");
答案 6 :(得分:0)
该字符串也可能是 URL 编码的,因此要进行解码:
@Html.Raw(HttpUtility.UrlDecode(string))
答案 7 :(得分:-5)
在控制器中使用此代码:
string noHTML = Regex.Replace(inputHTML, @"<[^>]+>| ", "").Trim();