Styles.Render 生成连接为空白,类似失效的样子。
今天刚用mvc4,发现了一个新的绑定压缩方法,很是兴奋,然后开始模仿着写。
bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css")); //添加Bootstarp的CSS bundles.Add(new StyleBundle("~/Content/BootStrap/css").Include("~/Content/BootStrap/bootstrap.min.css"));
这样写发现我在生成的页面中没有生成连接。
然后调试了半天没发现什么问题。试试改成这个文bootstrap.css。
bundles.Add(new StyleBundle("~/Content/BootStrap/css").Include("~/Content/BootStrap/bootstrap.css"));
再看,发现已经有了Bootstarp的效果了。
难道是css的文件问题?不至于吧?我把原来的css改名,发现一样的正常。
然而我还是不明白为什么?难道这个方法不知道带有min的字样生成?
我就做了个试验将site.css 改名为 site.min.css
bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.min.css"));
果然马上就不生成了。
反正很神奇,我还未能找到问题,求高手解答。
默认本地vs里面调试的时候,因为web.config文件里面有一个debug属性,当有此属性时,默认css和js是不会压缩的,此时加载的js也是不支持.min.js这种的 ,加载的都是不带min的js文件!而当发布到iis后,web.config里面没有debug属性了,此时css和js是会自动启用压缩功能,压缩后的css里面若没有指定图片相对于网站的根目录的路径 的话,图片也是没办法正常显示的,js此时也会只加载有.min的文件。
解决方案:
在绑定文件BundleConfig的方法RegisterBundles下设置属性:
BundleTable.EnableOptimizations = false;
问题解决。
MVC4 如何下发带有min 的js
添加一个方法:
public static void ResetIgnorePatterns(IgnoreList ignoreList) { ignoreList.Clear(); ignoreList.Ignore("*.intellisense.js"); ignoreList.Ignore("*-vsdoc.js"); ignoreList.Ignore("*.debug.js", OptimizationMode.WhenEnabled);
ignoreList.Ignore("*.min.js", OptimizationMode.WhenDisabled);
ignoreList.Ignore("*.min.css", OptimizationMode.WhenDisabled); }
然后再添加这个语句
public static void RegisterBundles(BundleCollection bundles) { ResetIgnorePatterns(bundles.IgnoreList);//添加这句 ........... ........... }
福建C# .net MVC 技术群 468259528