在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作为页面类型,但这只是在视图中提交的一个。有什么想法吗?
答案 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/>
标记替换行尾。这将在没有任何外部库的情况下解决您的问题