如何使用ASP.NET razor输出xml?

时间:2011-05-09 22:52:57

标签: xml asp.net-mvc-3 razor

您好我正在尝试返回一个xml视图,这意味着内容类型为“text / xml”,视图使用的是ASP.NET MVC razor。另一篇文章ASP.NET MVC and text/xml content type展示了如何使用aspx视图。如何用剃刀完成同样的工作?

3 个答案:

答案 0 :(得分:32)

我在这里找到了一个使用剃须刀视图生成的RSS源的示例:

  

writing xml in razor syntax

基本上你必须将Response.ContentType设置为"text/xml",然后你就可以像编写html那样编写你的xml。

您必须向下滚动才能看到实际代码,因此我将在此处复制:

@{
    var db = Database.OpenFile("Database.sdf");
    var getRss = db.Query("SELECT TOP(5) * FROM Table" );
    Response.ContentType = "text/xml";
}
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Website name</title>
        <link>website link</link>
        <description>News for website</description>
        <dc:language>en-gb</dc:language>
        <dc:creator>email</dc:creator>
        <dc:rights>Copyright 2010</dc:rights>
        <admin:generatorAgent rdf:resource="http://www.styledna.net/" />
        @foreach (var row in getRss) {
            <item>
                <title>@row.title</title>
                <link>@row.link</link>
                <description> some html desc for the item </description>  
            </item>
        }
    </channel>
</rss>

Mikesdotnetting

答案 1 :(得分:6)

如果您愿意,可以改为从视图操作中更改内容类型,如下所示:

public ActionResult MyAction() {
    Response.ContentType = "text/xml";
    return View();
}

答案 2 :(得分:1)

对于任何尝试使用ASP.NET Core的人,您都可以将Response作为上下文的属性来找到:

@{
    Context.Response.ContentType = "text/xml";
}
<?xml version="1.0" encoding="UTF-8" ?>
<doc>
    ...
</doc>

尽管我发现在Action中设置内容类型效果很好(如上述@Luis所述)