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

Gib*_*boK 34 html asp.net-mvc razor c#-4.0 asp.net-mvc-3

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

我有一个带有以下代码的视图.model.ContentBody有一些HTML标签.

我需要将此HTML内容显示为DECODED.

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

 <div class="display-field">
        @Html.DisplayFor(model => model.ContentBody)
 </div>
Run Code Online (Sandbox Code Playgroud)

Gib*_*boK 77

<div class="display-field">
    @Html.Raw(Model.ContentBody)
</div>
Run Code Online (Sandbox Code Playgroud)

这段代码解决了这个问题!

  • 你要小心那个,它盲目地信任文本并将其作为字符串放到页面上.如果Model.ContentBody等于`<script> window.location.href ="badGuyNeighborhood.com"</ script>,该怎么办? (5认同)

Moh*_*mar 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>
Run Code Online (Sandbox Code Playgroud)

但这有效: -

@MvcHtmlString.Create(HttpUtility.HtmlDecode(@model.ContentBody))
Run Code Online (Sandbox Code Playgroud)

或者您也可以使用: -

@Html.Raw(HttpUtility.HtmlDecode(@model.ContentBody));
Run Code Online (Sandbox Code Playgroud)


Dig*_*mar 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);
    }
Run Code Online (Sandbox Code Playgroud)