gpt4 book ai didi

ASP.NET MVC : StyleBundle IncludeDirectory & CssRewriteUrlTransform

转载 作者:行者123 更新时间:2023-12-01 16:46:47 25 4
gpt4 key购买 nike

我遇到了和许多人一样的问题,当我捆绑 CSS 样式表时,我的图像无法解析。

现在我发现一些 SO-Answers 建议使用 new CssRewriteUrlTransform() 作为新 StyleBundle-Object 的“Include”方法的第二个参数。 This one for example

我使用 IncludeDirectory 是因为我有一个目录,我可以在其中添加文件,而无需将它们注册到某个地方(并且它们是我不想列出的许多文件)。但 IncludeDirectory 没有覆盖来传递 CssRewriteUrlTransform-Object:

不起作用: bundles.Add(new StyleBundle("~/bundles/css/directives").IncludeDirectory("~/app/directives", "*.css “,真));

我也尝试过:

StyleBundle sb = new StyleBundle();
sb.Transforms.Add(new CssRewriteUrlTransform());

但是 Transforms 的类型为 IBundleTransform,我正在尝试传递 IItemTransform。

关于如何做到这一点有什么建议吗?

最佳答案

由于我没有找到更好的答案,我将发布我的解决方案(感觉更像是一种解决方法):

public class BundleConfig {
private class CssRewriteUrlTransformWrapper : IItemTransform {
public string Process(string includedVirtualPath, string input) {
//see https://stackoverflow.com/questions/19765238/cssrewriteurltransform-with-or-without-virtual-directory
return new CssRewriteUrlTransform().Process("~" + VirtualPathUtility.ToAbsolute(includedVirtualPath), input);
}
}

private static string MakeVirtualPath(string fromPhysPath, string withVirtualPath) {
var res = fromPhysPath.Replace("\\", "/");
var idx = res.IndexOf(withVirtualPath.Replace("~", ""));
res = "~" + res.Substring(idx);

return res;
}

private static StyleBundle CreateStyleBundleForDir(string virtualPath) {
StyleBundle res = new StyleBundle(virtualPath + "/bundle");

string[] cssFilesPhysical = Directory.GetFiles(HttpContext.Current.Server.MapPath(virtualPath), "*.css", SearchOption.AllDirectories);

List<string> cssFilesVirtual = new List<string>();
foreach (var file in cssFilesPhysical) {
res.Include(MakeVirtualPath(file, virtualPath), new CssRewriteUrlTransformWrapper());
}

return res;
}

public static void RegisterBundles(BundleCollection bundles) {
bundles.Add(CreateStyleBundleForDir("~/app/custom"));
}
}

我愿意接受建设性的批评:)

关于ASP.NET MVC : StyleBundle IncludeDirectory & CssRewriteUrlTransform,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36183400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com