Hi I'm trying to implement CdLoader in Umbraco 6 and when I add the CdLoader Marco to a page with Debug = false the marco errors with the following error.
ArgumentNullException was unhandeled
Value cannot be null. Parameter name: virtualPath
It's at the following stage in the file:
renderer.RegisterDependencies(allDependencies, paths, out jsOutput, out cssOutput, Context);
The full razor file cobeled together from a few form posts
@* This class will help you to load all scripts and stylesheets using ClientDependency Parameters: CssPaths (string) Pipe-separated css. The order how you put them is important LessPaths (string) Pipe-separated less. The order how you put them is important JsPaths (string) Pipe-separated js IncludeDefaultPaths (bool, default false) If true, it will prepend ~/css, ~/less and ~/scripts *@ @inherits umbraco.MacroEngines.DynamicNodeContext @using ClientDependency.Core @using ClientDependency.Core.Controls @{ var cssPaths = Parameter.CssPaths; var lessPaths = Parameter.LessPaths; var jsPaths = Parameter.JsPaths; bool includeDefaultPaths; bool.TryParse(Parameter.IncludeDefaultPaths, out includeDefaultPaths); CdObjects cdPaths = GetClientDependencyPaths(cssPaths, lessPaths, jsPaths, includeDefaultPaths); @Html.Raw(cdPaths.Styles) @Html.Raw(cdPaths.Scripts) } @functions { CdObjects GetClientDependencyPaths(string cssPaths, string lessPaths, string jsPaths, bool includeDefaultPaths) { var paths = new HashSet<IClientDependencyPath> { new ClientDependencyPath {Name = "Styles", Path = "~/css"}, new ClientDependencyPath {Name = "Less", Path = "~/less"}, new ClientDependencyPath {Name = "Scripts", Path = "~/scripts"} }; var allDependencies = new List<IClientDependencyFile>(); string cssOutput = ""; string jsOutput = ""; int priority = 0; if (!string.IsNullOrEmpty(cssPaths)) { allDependencies.AddRange(cssPaths.Split('|').Select(path => new CssInclude { PathNameAlias = includeDefaultPaths ? "Styles" : string.Empty, FilePath = path, Priority = priority++ })); } if (!string.IsNullOrEmpty(lessPaths)) { allDependencies.AddRange(lessPaths.Split('|').Select(path => new CssInclude { PathNameAlias = includeDefaultPaths ? "Less" : string.Empty, FilePath = path, Priority = priority++ })); } if (!string.IsNullOrEmpty(jsPaths)) { priority = 0; allDependencies.AddRange(jsPaths.Split('|').Select(path => new JsInclude { PathNameAlias = includeDefaultPaths ? "Scripts" : string.Empty, FilePath = path, Priority = priority++ })); } var renderer = new ClientDependency.Core.FileRegistration.Providers.StandardRenderer(); renderer.RegisterDependencies(allDependencies, paths, out jsOutput, out cssOutput, Context); return new CdObjects { Styles = cssOutput, Scripts = jsOutput }; } class CdObjects { public string Styles { get; set; } public string Scripts { get; set; } } }
Any ideas as to why it's unable to output the files correctly?
I've already tried to implement CDLoader to a 4.8.0 & 4.9.0 installations, as you did, with no luck.
I finally decided to use Combres, which from what I've seen so far, is a little easier to implement than ClientDependency, and in less than 2 hours it has been deployed in a 4.11.4 installation as well as in a 6.0.0 one, with no problem!
CdLoader in Umbraco 6 with ClientDependency
Hi I'm trying to implement CdLoader in Umbraco 6 and when I add the CdLoader Marco to a page with Debug = false the marco errors with the following error.
ArgumentNullException was unhandeled
Value cannot be null.
Parameter name: virtualPath
It's at the following stage in the file:
The full razor file cobeled together from a few form posts
Any ideas as to why it's unable to output the files correctly?
Hi webmonger,
I've already tried to implement CDLoader to a 4.8.0 & 4.9.0 installations, as you did, with no luck.
I finally decided to use Combres, which from what I've seen so far, is a little easier to implement than ClientDependency, and in less than 2 hours it has been deployed in a 4.11.4 installation as well as in a 6.0.0 one, with no problem!
Hi Ioannis
Thanks for your input. I ended up including System.Web.Optimization and using the standard Bundling.
Jon
is working on a reply...