示例#1
0
        /// <summary>
        /// Creates a Virtual Path to the view associated with the RenderingItem associated with this instance.
        /// Uses RenderingItemPathRoot and ViewRootPath to establish the valid part of the path from Sitecore as well
        /// as the starting point for the virtual path.
        /// </summary>
        /// <returns>The virtual path to the view.</returns>
        public string ResolveViewPath()
        {
            var area          = RenderingItem.InnerItem["Area"];
            var viewRoot      = ViewRootPath;
            var renderingRoot = RenderingItemPathRoot;

            if (!string.IsNullOrEmpty(area))
            {
                renderingRoot = renderingRoot.Replace("$Area", area).ToLower();
                viewRoot      = viewRoot.Replace("$Area", area).ToLower();
            }

            var path          = NameConverter.ConvertItemPathToClassPath(RenderingItem.InnerItem.Paths.FullPath).ToLower();
            var truncatedPath = path.Replace(renderingRoot, string.Empty);

            var viewLocation = viewRoot + truncatedPath + ".cshtml";

            return(viewLocation);
        }
        /// <inheritdoc />
        public string ResolveViewPath(RenderingItem renderingItem)
        {
            var area          = renderingItem.InnerItem["Area"];
            var viewRoot      = ViewRootPath.ToLower();
            var renderingRoot = RenderingItemPathRoot.ToLower();

            if (!string.IsNullOrEmpty(area))
            {
                renderingRoot = renderingRoot.Replace("$area", area).ToLower();
                viewRoot      = viewRoot.Replace("$area", area).ToLower();
            }

            // We need to figure out if there's a Helix folder in the Rendering path and ensure it gets removed from the View's path.
            // Helix folders don't show up in View Paths because MVC Areas aren't complex enough to support it.
            var fullPath = renderingItem.InnerItem.Paths.FullPath;

            if (fullPath.Contains("/Foundation/"))
            {
                renderingRoot = renderingRoot.Replace("$helix", "foundation");
            }

            if (fullPath.Contains("/Feature/"))
            {
                renderingRoot = renderingRoot.Replace("$helix", "feature");
            }

            if (fullPath.Contains("/Project/"))
            {
                renderingRoot = renderingRoot.Replace("$helix", "project");
            }

            var path = NameConverter.ConvertItemPathToClassPath(fullPath).ToLower();

            var truncatedPath = path.Replace(renderingRoot, string.Empty);

            var viewLocation = viewRoot + truncatedPath + ".cshtml";

            return(viewLocation);
        }