2011-05-09 8 views

Respuesta

32

He encontrado un ejemplo de un canal RSS producido con el fin de afeitar aquí:

writing xml in razor syntax

Básicamente, usted tiene que establecer la Response.ContentType a "text/xml", y entonces sólo puede escribir el código XML como si fuera html

usted tiene que desplazarse hacia abajo para ver el código real para que voy a copiar aquí:

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

por Mikesdotnetting

+8

@CrazyDart: Oye, es un ejemplo ... y la pregunta es sobre la configuración del ContentType, no sobre qué más se hace en la vista. El OP solicita el equivalente razor de '<% @ Page Language =" C# "Inherits =" System.Web.Mvc.ViewPage "ContentType =" text/xml "%>' que es '@Response.ContentType =" text/xml "'. – fretje

+0

Estoy con Yah, miré el enlace de ejemplo. No soy un gran fanático de copiar y pegar código de basura. Eliminaré el -1, pero debes sacar ese código basura para que algún novato no piense que así es como se hacen las cosas en MVC. – CrazyDart

+1

@fretje, +1 para responder la pregunta del OP y definir el XML en una vista Razor. –

6

Si lo prefiere, puede en lugar de hacer el cambio de tipo de contenido de su acción de la vista , como el siguiente:

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

Advertencia: por alguna razón configurarlo en la acción trabajé en algunas acciones pero no en otras en mi caso – Titus

+0

@Titus Quizás el tipo de contenido esté anulado. Ya sea por CSHTML utilizando el método definido anteriormente, o por ActionResult que está devolviendo. Por ejemplo, ContentResult se puede configurar para configurar el tipo de contenido. Creo que el orden en que se puede establecer y anular el tipo de contenido es el método de Acción, el resultado de la acción y CSHTML. Aunque creo que los dos últimos pueden alternar dependiendo de cómo se implemente ese ActionResult. –

Cuestiones relacionadas