Search code examples
xmlasp.net-mvc-3razor

How do I output xml with ASP.NET razor?


Hi I'm trying to return a view that is xml, meaning the content type will be "text/xml", and the view is using ASP.NET MVC razor. Another post ASP.NET MVC and text/xml content type showed how to do it with aspx view. How do I get the same done with razor?


Solution

  • 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