Как вывести XML с помощью бритвы ASP.NET? - PullRequest
10 голосов
/ 10 мая 2011

Привет. Я пытаюсь вернуть представление в формате xml, то есть тип содержимого будет "text / xml", а представление использует бритву ASP.NET MVC. В другом посте ASP.NET MVC и типе контента text / xml показано, как это сделать в представлении aspx. Как мне сделать то же самое с бритвой?

Ответы [ 3 ]

32 голосов
/ 10 мая 2011

Я нашел пример RSS-канала, созданного с использованием бритвы, здесь:

написание XML в синтаксисе бритвы

В основном у вас естьчтобы установить 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

6 голосов
/ 17 января 2012

Если вы предпочитаете, вы можете вместо этого изменить тип содержимого из действия просмотра, например:

public ActionResult MyAction() {
    Response.ContentType = "text/xml";
    return View();
}
1 голос
/ 26 сентября 2018

Для любого, кто пытается сделать это, является ASP.NET Core, вы можете найти Ответ как свойство контекста:

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

Хотя я обнаружил, что настройка типа контента в действии работала отличнокак предложено @Luis выше)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...