protected void NormalizeFields(SitemapNode node, SitemapRoute route = null, string[] roles = null) { if (route != null) { if (node.Route == null) { node.Route = route; } else if (string.IsNullOrEmpty(node.Route.Controller)) { node.Route.Controller = route.Controller; } } if (node.Roles == null && roles != null) { node.Roles = roles; } if (node.Children != null) { foreach (var child in node.Children) { NormalizeFields(child, node.Route, node.Roles); } } }
public XElement GetSitemapRoute(SitemapRoute route) { XNamespace xmlns = "http://www.sitemaps.org/schemas/sitemap/0.9"; var rootUrl = GetRootPath(); string url = route.Url; if (!Regex.IsMatch(route.Url, @"^\w+://.*$")) { url = rootUrl + route.Url.TrimStart('/'); } var element = new XElement(xmlns + "url"); element.Add(new XElement(xmlns + "loc", url)); element.Add(new XElement(xmlns + "changefreq", route.UpdateFrequency)); if (route.LastUpdated.HasValue) { element.Add(new XElement(xmlns + "lastmod", route.LastUpdated.Value.ToString("yyyy-MM-dd"))); } var priority = (route.Priority - 1) / 4.0; if (priority >= 0.0 && priority <= 1.0) { element.Add(new XElement(xmlns + "priority", (route.Priority - 1) / 4.0)); } return(element); }