c# - Linq to XML - 将 CDATA 呈现为 HTML

标签 c# asp.net razor linq-to-xml

我有以下 XML:

<stories>
    <story id="1234">
        <title>This is a title</title>
        <date>1/1/1980</date>
        <article>
            <![CDATA[<p>This is an article.</p>]]>
        </article>
    </story>
</stories>

以及以下 C# 中的 Linq to XML 代码:

@{
    XDocument xmlDoc = XDocument.Load("foo.xml");

    var stories = from story in xmlDoc.Descendants("stories")
                        .Descendants("story")
                        .OrderByDescending(s => (string)s.Attribute("id"))
        select new
        {
            title = story.Element("title").Value,
            date = story.Element("date").Value,
            article = story.Element("article").Value,
        };

    foreach (var story in stories)
    {

        <text><div class="news_item">
            <span class="title">@story.title</span>
            <span class="date">@story.date</span>
            <div class="story">@story.article</div>
        </div></text>

    }
}

呈现的 HTML 输出到浏览器为:

<div class="news_item">
    <span class="title">This is a title</span>
    <span class="date">1/1/1980</span>
    <div class="story">&lt;p&gt;This is an article.&lt;/p&gt;</div>
</div>

我想要 <p>标记呈现为浏览器的 HTML,未编码。我该如何实现?

最佳答案

Razor 默认对值进行编码。您需要使用 Html.Raw 帮助器来避免它 ( Html.Raw() in ASP.NET MVC Razor view )

 <div class="story">@Html.Raw(story.article)</div>

关于c# - Linq to XML - 将 CDATA 呈现为 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13409125/

相关文章:

c# - LINQ + 加入嵌套的 foreach Razor 输出,从 groupby 写出标题行

c# - Unity 生成预制件

c# - 在 C# 中模拟 Winkey 行为

asp.net - 确定 ASP.Net 是否正确注册

c# - 传递字典以在 HTML/Razor 中完全查看和使用它

c# - 如何将用户输入的 ID 与 ASP MVC 中数据库中存储的 ID 进行比较

c# - 等待多个任务并访问结果

c# - 单元测试适配器连接数据源失败

asp.net - 在 ASP.net 中获取当前登录用户的 ID

javascript - 页面 View 不符合预期,html 未出现,页面为空白