Beispiel #1
0
        public static void Initialize()
        {
            WebPageRazorHost.AddGlobalImport("MvcSiteMapProvider.Web.Html");
            WebPageRazorHost.AddGlobalImport("MvcSiteMapProvider.Web.Html.Models");

            var settings = new ConfigurationSettings();

            if (settings.EnableSiteMapFile)
            {
                var validator = new SiteMapXmlValidator();
                validator.ValidateXml(HostingEnvironment.MapPath(settings.SiteMapFileName));
            }

            if (DependencyResolver.Current.GetType().FullName.Equals("System.Web.Mvc.DependencyResolver+DefaultDependencyResolver"))
            {
                var currentFactory = ControllerBuilder.Current.GetControllerFactory();
                ControllerBuilder.Current.SetControllerFactory(
                    new ControllerFactoryDecorator(currentFactory, settings));
            }
            else
            {
                var currentResolver = DependencyResolver.Current;
                DependencyResolver.SetResolver(new DependencyResolverDecorator(currentResolver, settings));
            }

            var siteMapLoaderContainer = new CustomSiteMapLoaderContainer(settings);

            SiteMaps.Loader = siteMapLoaderContainer.ResolveSiteMapLoader();

            if (settings.EnableSitemapsXml)
            {
                XmlSiteMapController.RegisterRoutes(RouteTable.Routes);
            }
        }
Beispiel #2
0
        public static void Compose()
        {
#if !MVC2
            // Register global namespaces with Razor so we don't have to import them in Web.config
            WebPageRazorHost.AddGlobalImport("MvcSiteMapProvider.Web.Html");
            WebPageRazorHost.AddGlobalImport("MvcSiteMapProvider.Web.Html.Models");
#endif

            // Get the configuration settings
            var settings = new ConfigurationSettings();

            // If the config specifies to use an external DI container, skip the internal container.
            if (!settings.UseExternalDIContainer)
            {
                if (settings.EnableSiteMapFile)
                {
                    // Validate the Xml File.
                    var validator = new SiteMapXmlValidator();
                    validator.ValidateXml(HostingEnvironment.MapPath(settings.SiteMapFileName));
                }

#if !MVC2
                // If not using a custom DependencyResolver, we prefer to use IControllerFactory
                if (DependencyResolver.Current.GetType().FullName.Equals("System.Web.Mvc.DependencyResolver+DefaultDependencyResolver"))
                {
#endif
                // Setup the Controller Factory with a decorator that can resolve the internal controllers
                var currentFactory = ControllerBuilder.Current.GetControllerFactory();
                ControllerBuilder.Current.SetControllerFactory(
                    new ControllerFactoryDecorator(currentFactory, settings));
#if !MVC2
            }
            else
            {
                // If using a custom IDependencyResolver, decorate it with our IDependencyResolver so we can resolve
                // our internal controller.
                var currentResolver = DependencyResolver.Current;
                DependencyResolver.SetResolver(new DependencyResolverDecorator(currentResolver, settings));
            }
#endif

                // Set the static loader instance
                var siteMapLoaderContainer = new SiteMapLoaderContainer(settings);
                SiteMaps.Loader = siteMapLoaderContainer.ResolveSiteMapLoader();

                if (settings.EnableSitemapsXml)
                {
                    // Register the route for SiteMaps XML
                    XmlSiteMapController.RegisterRoutes(RouteTable.Routes);
                }
            }
        }