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

Ray*_*Ray 11 xml razor asp.net-mvc-3

嗨,我正在尝试返回一个xml视图,这意味着内容类型将是"text/xml",并且该视图使用的是ASP.NET MVC razor.ASP.NET MVC和text/xml内容类型的另一篇文章展示了如何使用aspx视图.如何用剃刀完成同样的工作?

fre*_*tje 33

我在这里找到了一个用剃刀视图生成的rss feed的示例:

用razor语法编写xml

基本上你必须设置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>
Run Code Online (Sandbox Code Playgroud)

通过Mikesdotnetting

  • @CrazyDart:嘿,这是一个例子......问题在于设置ContentType,而不是在视图中做了什么.OP要求剃刀等效于`<%@ Page Language ="C#"Inherits ="System.Web.Mvc.ViewPage"ContentType ="text/xml"%>`这是`@Response.ContentType ="text/XML"`. (8认同)
  • @fretje +1对所提问题的完全正确答案.查询/标题设置代码显然只是为了保持示例简单来说明这一点; 不是"最佳实践"的一个例子. (4认同)

Lui*_*rez 7

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

public ActionResult MyAction() {
    Response.ContentType = "text/xml";
    return View();
}
Run Code Online (Sandbox Code Playgroud)