I’m trying to use CssRwriteUrlTransform in one of my bundles in bundleconfig, but I keep getting a missing argument error, this is what I have:
bundles.Add(new StyleBundle("~/Content/GipStyleCss").Include(
new CssRewriteUrlTransform(),
"~/Content/GipStyles/all.css",
"~/Content/GipStyles/normalize.css",
"~/Content/GipStyles/reset.css",
"~/Content/GipStyles/style.css",
));
this is probably wrong, but I don’t know where to add the the CssRewriteUrlTransform argument with an include that has multiple arguments
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
You can’t mix both overloads of the Include method:
public virtual Bundle Include(params string[] virtualPaths); public virtual Bundle Include(string virtualPath, params IItemTransform[] transforms);
If you need the CssRewriteUrlTransform on each of the files, try this:
bundles.Add(new StyleBundle("~/Content/GipStyleCss")
.Include("~/Content/GipStyles/all.css", new CssRewriteUrlTransform())
.Include("~/Content/GipStyles/normalize.css", new CssRewriteUrlTransform())
.Include("~/Content/GipStyles/reset.css", new CssRewriteUrlTransform())
.Include("~/Content/GipStyles/style.css", new CssRewriteUrlTransform())
);
Method 2
I ran into the same situation and ended up creating a small extension method:
public static class BundleExtensions {
/// <summary>
/// Applies the CssRewriteUrlTransform to every path in the array.
/// </summary>
public static Bundle IncludeWithCssRewriteUrlTransform(this Bundle bundle, params string[] virtualPaths) {
//Ensure we add CssRewriteUrlTransform to turn relative paths (to images, etc.) in the CSS files into absolute paths.
//Otherwise, you end up with 404s as the bundle paths will cause the relative paths to be off and not reach the static files.
if ((virtualPaths != null) && (virtualPaths.Any())) {
virtualPaths.ToList().ForEach(path => {
bundle.Include(path, new CssRewriteUrlTransform());
});
}
return bundle;
}
}
You can then call it like this:
bundles.Add(new StyleBundle("~/bundles/foo").IncludeWithCssRewriteUrlTransform(
"~/content/foo1.css",
"~/content/foo2.css",
"~/content/foo3.css"
));
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0