2011-05-09 71 views

回答

32

我发现用剃刀视图这里出产的RSS提要的一个例子:

writing xml in razor syntax

基本上,你必须设置Response.ContentType"text/xml",然后你可以只写你的XML就好像它是html一样。

您需要向下滚动看到实际的代码,所以我会在这里复制:如果你喜欢,你可以做,而不是从您的视图操作的内容类型变化

@{ 
    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

+8

@CrazyDart:嘿,这是一个例子......问题是关于设置ContentType,而不是关于视图中做了什么。 OP要求使用'@Response.ContentType =“text/xml”%>“的”%@ Page Language =“C#”Inherits =“System.Web.Mvc.ViewPage”ContentType =“text/xml”%> XML“'。 – fretje 2011-05-09 23:17:43

+0

林与我,我看了例子链接。我不喜欢复制粘贴垃圾代码。我将删除-1,但你需要拿出那些垃圾代码,所以有些noob不认为这是如何在MVC中完成的。 – CrazyDart 2011-05-09 23:22:28

+1

@fretje,+1用于回答OP的问题并在Razor视图中定义XML。 – 2011-05-09 23:22:29

6

,如下所示:

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

警告:由于某种原因将其设置为动作在一些行动上工作,但在我的情况下不在其他人上 – Titus 2016-02-03 17:05:34

+0

@Titus也许内容类型被覆盖。通过CSHTML使用上面定义的方法,或者通过您返回的ActionResult。例如ContentResult可以配置为设置内容类型。我认为可以设置和重写内容类型的顺序是Action方法,操作结果和CSHTML。虽然我认为最后两个可以交替取决于ActionResult的实现方式。 – 2016-02-03 20:57:28