How do I output xml with ASP.NET razor? How do I output xml with ASP.NET razor? xml xml

How do I output xml with ASP.NET razor?


I found an example of an rss feed produced with a razor view here:

writing xml in razor syntax

Basically you have to set the Response.ContentType to "text/xml", and then you can just write your xml as if it was html.

You have to scroll down to see the actual code so I'll copy it here:

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

by Mikesdotnetting


If you prefer you can instead make the content type change from your view action, like so:

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


For anyone trying to do this is ASP.NET Core, you can find the Response as a property of the Context:

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

Although I found setting the content type in the Action worked perfectly well (as suggested by @Luis above)