Ho utilizzato Mike Brind's Sitemap code, con una piccola modifica.
È necessario aggiungere lo XNamespace a ogni XElement, altrimenti Google sputa il manichino.
Ecco la mia versione:
public ContentResult Index()
{
XNamespace ns = "http://www.sitemaps.org/schemas/sitemap/0.9";
const string url = "http://www.website.com/controller/action/{0}";
var items = _db.DataAccessHere();
var sitemap = new XDocument(
new XDeclaration("1.0", "utf-8", "yes"),
new XElement(ns + "urlset",
from i in items
select
//Add ns to every element.
new XElement(ns + "url",
new XElement(ns + "loc", string.Format(url, i.ItemID)),
new XElement(ns + "lastmod", String.Format("{0:yyyy-MM-dd}", i.DateAddedUTC)),
new XElement(ns + "changefreq", "monthly"),
new XElement(ns + "priority", "0.5")
)
)
);
return Content(sitemap.ToString(), "text/xml");
}
credito a Mike per la pubblicazione dell'articolo e codice originale.
fonte
2009-12-15 03:50:21
Ta, Bel pezzo di codice. Potresti voler aggiungere un altro XElement del nodo del sito root. – Junto
ottimo e semplice codice, l'ho usato e ho creato http://www.gprprojecten.nl/Home/Sitemap con l'aggiunta che @Junto ha già proposto –
Grazie - ancora - a Mike. Il suo sito Web è http://www.mikesdotnetting.com ei suoi articoli sono semplici da capire e potenti. E no, non ho alcun legame con lui a parte questo voglio dire grazie! –