.net - @item.BodyText 在 MVC3 中不是原始格式

标签 .net html asp.net-mvc razor umbraco

当我使用@item.BodyText 时,我得到了原始的html 输出——其中包含作为字符串的html 标签。看起来像这样:

<p>State of Louisiana for state funded&nbsp; dispensing program<br>June 21, 2011<br><br>Software update:<br>Version 3.1 is 10% faster<br>

而且我需要那些 html 标签不以字符串形式呈现,而是用于工作和格式化文本。这样它看起来更像:

State of Louisiana for state funded dispensing program June 21, 2011

Software update: Version 3.1 is 10% faster

我正在使用基于 .Net Framework 4 和 MVC3 的 Umbraco 5。

我的局部 View 代码:

@inherits RenderViewPage
@using Umbraco.Cms.Web;
@{
    var Homepage = @DynamicModel;
    while (Homepage.ContentType.Alias != "homePage")
    {
        Homepage = Homepage.Parent;
    }
}

    @foreach (var item in Homepage.Children)
    {
        if (@item.CurrentTemplate != null)
        {
            var childName = item.Name ?? "(No name yet)";
            if (childName == "News")
            {              
                @item.BodyText           
            }
        }
    }

我尝试使用 @Umbraco.Field(Model, "bodyText") 而不是 @item.BodyText 但后来我得到了当前页面的内容,而不是“新闻” "我需要的页面。

非常感谢任何帮助!

最佳答案

在 Razor 中,出于安全原因会发生这种情况。所有 View 输出都经过 Html 编码以防止注入(inject)。

您始终需要明确声明您不希望 Razor 对原始输出进行 HTML 编码,您可以通过使用 Html.Raw()helper 方法包​​装您的语句来做到这一点:

替换:

@item.BodyText

与:

@Html.Raw(item.BodyText)

关于.net - @item.BodyText 在 MVC3 中不是原始格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9483660/

相关文章:

c# - 表内每条记录一个堆栈面板

C# 获取给定路径的文件夹深度的最佳方法?

asp.net-mvc - Intellisense 在 VS 2019 中不建议旧的 MVC5 项目

c# - ASP.NET,MVC4,授权: users should see only own content

php - 创建一个 'robot' 来填充一些页面的表单

c# - 以 ? 结尾的变量类型

javascript - 防止数字输入的 maxLength 不断改变最后一个数字的值?

html - Bootstrap 在输入字段旁边放置两个字形图标

html - CSS 如何使 div 100% 尽管 80% div

javascript - 将值推送到 jquery 中的数组