Esempio n. 1
0
 private IEnumerable <SiteMapIndexNodeModel> CreateIndexNode(ISiteMapConfigurationModel configuration, string baseUrl, int pageCount)
 {
     for (int page = 1; page <= pageCount; page++)
     {
         string url = configuration.CreateSitemapUrl(page);
         SiteMapIndexNodeModel indexNode = new SiteMapIndexNodeModel {
             Url = url
         };
         ValidateUrl(baseUrl, indexNode);
         yield return(indexNode);
     }
 }
Esempio n. 2
0
        public ActionResult CreateSiteMaps(HttpContextBase httpContext, IEnumerable <SiteMapNodeModel> siteMapNodes, ISiteMapConfigurationModel siteMapConfigurationModel)
        {
            if (httpContext == null)
            {
                throw new ArgumentNullException("httpContext");
            }
            if (siteMapConfigurationModel == null)
            {
                throw new ArgumentNullException("configuration");
            }

            string baseUrl = baseUrlProvider.GetBaseUrl(httpContext);
            List <SiteMapNodeModel> nodeList = siteMapNodes != null?siteMapNodes.ToList() : new List <SiteMapNodeModel>();

            IEnumerable <XmlSerializerNamespaceModel> namespaces = xmlNamespaceProvider.GetNamespaces(nodeList);

            if (siteMapConfigurationModel.Size >= nodeList.Count)
            {
                return(CreateSitemapInternal(baseUrl, nodeList, namespaces));
            }
            if (siteMapConfigurationModel.CurrentPage.HasValue && siteMapConfigurationModel.CurrentPage.Value > 0)
            {
                int skipCount = (siteMapConfigurationModel.CurrentPage.Value - 1) * siteMapConfigurationModel.Size;
                List <SiteMapNodeModel> pageNodes = nodeList.Skip(skipCount).Take(siteMapConfigurationModel.Size).ToList();
                return(CreateSitemapInternal(baseUrl, pageNodes, namespaces));
            }

            int pageCount  = (int)Math.Ceiling((double)nodeList.Count / siteMapConfigurationModel.Size);
            var indexNodes = CreateIndexNode(siteMapConfigurationModel, baseUrl, pageCount);

            return(actionResultFactory.CreateXmlResult(new SiteMapIndexModel(indexNodes)));
        }