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

Mar*_*rta 2 .net html asp.net-mvc umbraco razor

当我使用@ 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>
Run Code Online (Sandbox Code Playgroud)

我需要那些html标签不是作为字符串呈现,而是为了工作和格式化文本.所以看起来更像是这样:

路易斯安那州为州政府资助的配药计划2011年6月21日

软件更新:版本3.1快10%

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

我部分观点的代码:

@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           
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

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

任何帮助非常感谢!

ntz*_*lis 5

在Razor中,这是出于安全原因.所有视图输出都是Html编码,以防止注入.

您总是需要明确声明您不希望Razor对您的原始输出进行HTML编码,您可以通过使用Html.Raw()辅助方法包装语句来完成此操作:

更换:

@item.BodyText
Run Code Online (Sandbox Code Playgroud)

有:

@Html.Raw(item.BodyText)
Run Code Online (Sandbox Code Playgroud)