将网站部署到应用程序时的 mvc 捆绑和相关 css 图像
mvc bundling and relative css image when website is deployed to an application
要将相对图像路径转换为绝对路径,在 Whosebug 中提出和回答了许多问题,例如:
MVC4 StyleBundle not resolving images
建议添加 new CssRewriteUrlTransform()
如下:
bundles.Add(new StyleBundle("~/Content/css/jquery-ui/bundle")
.Include("~/Content/css/jquery-ui/*.css", new CssRewriteUrlTransform()));
这实际上曾经救过我。但是现在我将我的网站部署到一个应用程序(不是网站的根)仍然有一个问题:
申请是:
http://localhost/sample/
但图片网址如下:
http://localhost/css/imgs/spirit.png
虽然应该是:
http://localhost/sample/css/imgs/spirit.png
虽然捆绑的 css link 本身是正确的并且可以工作。
This is actually just another issue with optimizations in general not
working correctly when the app is running as a virtual directory.
由于您使用虚拟目录来托管您的网站,因此您应该制作一个包装器,它将使用固定路径调用 CssRewriteUrlTransform
:
public class CssRewriteUrlTransformWrapper : IItemTransform
{
public string Process(string includedVirtualPath, string input)
{
return new CssRewriteUrlTransform().Process("~" + VirtualPathUtility.ToAbsolute(includedVirtualPath), input);
}
}
如果不涉及虚拟目录,则可以执行以下代码:
bundles.Add(new StyleBundle("~/bundles/css").Include(
"~/Content/css/*.css", new CssRewriteUrlTransform()));
但是当使用 VirtualDirectory 时,CssRewriteUrlTransform 将重写到 Host 而不是 Host/VirtualDirectory。解决方案是派生 CssRewriteUrlTransform,这在此处进行了充分讨论:ASP.NET MVC4 Bundling with Twitter Bootstrap:
public class CssRewriteUrlTransformWrapper : IItemTransform
{
public string Process(string includedVirtualPath, string input)
{
return new CssRewriteUrlTransform().Process("~" + VirtualPathUtility.ToAbsolute(includedVirtualPath), input);
}
}
要将相对图像路径转换为绝对路径,在 Whosebug 中提出和回答了许多问题,例如:
MVC4 StyleBundle not resolving images
建议添加 new CssRewriteUrlTransform()
如下:
bundles.Add(new StyleBundle("~/Content/css/jquery-ui/bundle")
.Include("~/Content/css/jquery-ui/*.css", new CssRewriteUrlTransform()));
这实际上曾经救过我。但是现在我将我的网站部署到一个应用程序(不是网站的根)仍然有一个问题:
申请是:
http://localhost/sample/
但图片网址如下:
http://localhost/css/imgs/spirit.png
虽然应该是:
http://localhost/sample/css/imgs/spirit.png
虽然捆绑的 css link 本身是正确的并且可以工作。
This is actually just another issue with optimizations in general not working correctly when the app is running as a virtual directory.
由于您使用虚拟目录来托管您的网站,因此您应该制作一个包装器,它将使用固定路径调用 CssRewriteUrlTransform
:
public class CssRewriteUrlTransformWrapper : IItemTransform
{
public string Process(string includedVirtualPath, string input)
{
return new CssRewriteUrlTransform().Process("~" + VirtualPathUtility.ToAbsolute(includedVirtualPath), input);
}
}
如果不涉及虚拟目录,则可以执行以下代码:
bundles.Add(new StyleBundle("~/bundles/css").Include(
"~/Content/css/*.css", new CssRewriteUrlTransform()));
但是当使用 VirtualDirectory 时,CssRewriteUrlTransform 将重写到 Host 而不是 Host/VirtualDirectory。解决方案是派生 CssRewriteUrlTransform,这在此处进行了充分讨论:ASP.NET MVC4 Bundling with Twitter Bootstrap:
public class CssRewriteUrlTransformWrapper : IItemTransform
{
public string Process(string includedVirtualPath, string input)
{
return new CssRewriteUrlTransform().Process("~" + VirtualPathUtility.ToAbsolute(includedVirtualPath), input);
}
}