如何显示在MVC 3 Razor中解码的编码HTML?

时间:2012-10-05 06:46:25

标签: html asp.net-mvc asp.net-mvc-3 c#-4.0 razor

我在MVC 3和Asp.net C#中使用Razor。

我有一个包含以下代码的视图。 model.ContentBody有一些HTML标记。

我需要将此HTML内容显示为已解码

如何在视图中更改我的代码?

 <div class="display-field">
        @Html.DisplayFor(model => model.ContentBody)
 </div>

8 个答案:

答案 0 :(得分:72)

<div class="display-field">
    @Html.Raw(Model.ContentBody)
</div>

此代码解决了问题!

答案 1 :(得分:43)

@Html.Raw对我来说不起作用,例如: -

  string name = "&lt;p&gt;&lt;span style=&quot;font-size: small; color: #ff0000;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&lt;span style=&quot;font-size: large; color: #000000;&quot;&gt;Hi&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &lt;br /&gt;This is just a sample,&lt;br /&gt;This will not work with @Html.Raw(),&lt;br /&gt;";
  <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, @"<[^>]+>|&nbsp;", "").Trim();