在MVC 4中如何将一个视图元素呈现为XML文本?

时间:2014-05-28 00:03:24

标签: c# xml asp.net-mvc-4

在MVC 4应用程序中,我尝试构建标准的“详细信息”视图,但其中一个字段是XML文本,我想在页面上保留原样。我花了几个小时尝试,但我能做的最好的事情就是显示XML删除标签的内容。

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

<div class="display-label">
     @Html.DisplayNameFor(model => model.xmlElement)
</div>
<div class="display-field">
    @MvcHtmlString.Create(ViewBag.xmlElement)
</div>

第一个字段按预期显示,而第二个字段显示所有内容,但所有标记,xmlElement字符串中的行尾都将丢失。我看到一个引用,如果整个页面是xml我可以使用text / xml作为页面类型,但这只是在视图中提交的一个。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

更改您的观看代码如下:

如果未编码xmlElement:

 <div class="display-field">
      @MvcHtmlString.Create(HttpUtility.HtmlEncode(ViewBag.xmlElement).Replace("\n", "<br/>"))
 </div>

如果xmlElement已编码:

  <div class="display-field">
      @MvcHtmlString.Create(HttpUtility.HtmlDecode(ViewBag.xmlElement).Replace("\n", "<br/>"))
 </div>

这会将您的xml视为文本。

根据评论更新了答案

您可以使用<br/>标记替换行尾。这将在没有任何外部库的情况下解决您的问题