如何在ASP.NET MVC中的预标记中呈现HTML

时间:2012-06-15 20:22:00

标签: asp.net-mvc pre

ASP Classic(aspx)网络表单中,我可以在PRE标记中呈现整个HTML,如下所示:

网页:

<pre><asp:label id="ContentBox" runat="server"></asp:label></pre>

Code-behind

ContentBox.Text = html string;

然后整个HTML正确地呈现在网页上。

我想知道如何在ASP.NET MVC Razor视图中做同样的事情。现在,我看到的是一个原始的HTML字符串。

HTML字符串可能是这样的:

<?xml version="1.0" encoding="utf-8"?>
<html>
  <head>
    <title>A title</title>
    <style>
          .td_header {background-color: white; text-align:left}
          .table_header {background-color: white; width: 100%}
        </style>
  </head>
  <body>
    <table style="table_header" frame="void">
      <tr>
        <td class="td_header">
          <img src="logo_v3.jpg" alt="Helping" width="261" height="50" />
        </td>
      </tr>
    </table>
  </body>
</html>

2 个答案:

答案 0 :(得分:5)

这应该这样做:

<pre>@Html.Raw(Model.HtmlString)</pre>

答案 1 :(得分:0)

像这样的东西

<pre>
 @Html.LabelFor(m=>m.ContentBox)
<pre>

这假设您的模型中有一个contentbox属性

这将输出类似

的内容
<pre>
 <label> blah blah </label>
<pre>

但我认为你认为你需要asp控件来呈现数据......不是这样。

在您的控制器操作方法中,将您的内容填充到视图包中

@ViewBag.ContentBox ="Hello World";

在你的观点上使用它。

<pre>
     @ViewBag.ContentBox
<pre>

应按照您的预期进行渲染。

如果您要呈现HTML,则需要将其包装在@html.raw()