您好我正在尝试返回一个xml视图,这意味着内容类型为“text / xml”,视图使用的是ASP.NET MVC razor。另一篇文章ASP.NET MVC and text/xml content type展示了如何使用aspx视图。如何用剃刀完成同样的工作?
答案 0 :(得分:32)
我在这里找到了一个使用剃须刀视图生成的RSS源的示例:
基本上你必须将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>
答案 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所述)