.BindToSiteMap()

1 posts, 0 answers
  1. Doug
    Doug avatar
    1 posts
    Member since:
    Mar 2012

    Posted 05 Sep 2012 Link to this post

    I am looking for a easy way to load the sitemap xml from a string vs loading it from a sitemap.xml file.  I came up with this but it is a hack at best.  Basically i already have the xml for the sitemap and wanted to just load it directly not via the filesystem.  Any Ideas?

    // To Load the SiteMap into telerik framework
    SiteMapManager.SiteMaps.Register<AnotherXmlSiteMap>("sample", siteMap => siteMap.LoadFrom("~/sample.sitemap"));
     
    // Binding in UI
    @Html.Kendo().Menu().Name("Menu").BindTo("sample")
     
    // classes to support it
    public class AnotherXmlSiteMap : XmlSiteMap
    {
      public AnotherXmlSiteMap() : base(new PathResolver(), new AnotherVPP(), DI.Current.Resolve<ICacheProvider>())
      {
             
      }
     
      public override void LoadFrom(string relativeVirtualPath)
      {
          base.LoadFrom(relativeVirtualPath);
      }
    }
     
    public class AnotherVPP : IVirtualPathProvider
    {
      public bool DirectoryExists(string virtualPath)
      {
          throw new NotImplementedException();
      }
     
      public bool FileExists(string virtualPath)
      {
          throw new NotImplementedException();
      }
     
      public string GetDirectory(string virtualPath)
      {
          throw new NotImplementedException();
      }
     
      public string GetFile(string virtualPath)
      {
          throw new NotImplementedException();
      }
     
      public string GetExtension(string virtualPath)
      {
          throw new NotImplementedException();
      }
     
      public string CombinePaths(string basePath, string relativePath)
      {
          throw new NotImplementedException();
      }
     
      //public string ReadAllText(string virtualPath)
      public string ReadAllText(string sessionKey)
      {
          return @"<?xml version=""1.0"" encoding=""utf-8"" ?>
    <siteMap>
    <siteMapNode title=""Home"" controller=""Home"" action=""Overview"">
    <siteMapNode title=""Grid"">
    <siteMapNode controller=""grid"" action=""index"" title=""First Look (Razor)"" area=""razor""/>
    <siteMapNode controller=""grid"" action=""index"" title=""First Look (ASPX)"" area=""aspx""/>
    <siteMapNode controller=""grid"" action=""editing"" title=""Batch editing (Razor)"" area=""razor""/>
    <siteMapNode controller=""grid"" action=""editing"" title=""Batch editing (ASPX)"" area=""aspx""/>
    <siteMapNode controller=""grid"" action=""from-table"" title=""Initialization from table (Razor)"" area=""razor""/>
    <siteMapNode controller=""grid"" action=""from-table"" title=""Initialization from table (ASPX)"" area=""aspx""/>
    </siteMapNode>
    <siteMapNode title=""Menu"">
    <siteMapNode controller=""menu"" action=""index"" title=""First Look (Razor)"" area=""razor""/>
    <siteMapNode controller=""menu"" action=""index"" title=""First Look (ASPX)"" area=""aspx""/>
    <siteMapNode controller=""menu"" action=""events"" title=""Events (Razor)"" area=""razor""/>
    <siteMapNode controller=""menu"" action=""events"" title=""Events (ASPX)"" area=""aspx""/>
    <siteMapNode controller=""menu"" action=""api"" title=""API (Razor)"" area=""razor""/>
    <siteMapNode controller=""menu"" action=""api"" title=""API (ASPX)"" area=""aspx""/>
    <siteMapNode controller=""menu"" action=""images"" title=""Images (Razor)"" area=""razor""/>
    <siteMapNode controller=""menu"" action=""images"" title=""Images (ASPX)"" area=""aspx""/>
    </siteMapNode>
    </siteMapNode>
    </siteMap>";
      }
     
      public string ToAbsolute(string virtualPath)
      {
          throw new NotImplementedException();
      }
     
      public string AppendTrailingSlash(string virtualPath)
      {
          throw new NotImplementedException();
      }
    }
Back to Top