小编Hao*_*ung的帖子

是否有可能在MVC4中对BundleConfig进行单元测试?

据我所知,答案是否定的.我看到的问题来自课堂上的Include(params string[])方法System.Web.Optimization.Bundle.在内部调用System.Web.Optimization.IncludeDirectory(string, string, bool),然后使用此代码:

DirectoryInfo directoryInfo = new DirectoryInfo(
    HttpContext.Current.Server.MapPath(directoryVirtualPath));
Run Code Online (Sandbox Code Playgroud)

虽然可以HttpContext.Current在单元测试期间设置,但我无法弄清楚如何使其.Server.MapPath(string directoryVirtualPath)返回非空字符串.由于DirectoryInfo(string)构造函数在传递null参数时抛出异常,因此这样的测试将始终失败.

.NET团队对此有何建议?我们是否必须将捆绑配置作为集成测试或用户验收测试的一部分进行单元测试?

unit-testing asp.net-mvc-4 bundling-and-minification asp.net-optimization

10
推荐指数
2
解决办法
3149
查看次数

Web.Optimizations - 从样式/脚本包中获取所有包含的任何方式?

我正在使用一些动态捆绑,它根据配置添加CSS和JS文件.

我启动了一个新的StyleBundle,这样:

var cssBundle = new StyleBundle("~/bundle/css");
Run Code Online (Sandbox Code Playgroud)

然后循环通过配置并添加任何找到的包括:

cssBundle.Include(config.Source);
Run Code Online (Sandbox Code Playgroud)

循环之后,我想检查是否包含任何文件/目录.我知道有EnumerateFiles(),但我不认为这100%是为了这个目的.

其他人以前做过类似的事吗?

c# asp.net asp.net-mvc bundling-and-minification asp.net-optimization

10
推荐指数
1
解决办法
6397
查看次数

MVC4局部视图javascript捆绑问题

我正在使用visual studio 11开发一个项目ASP.net 4,MVC4(RC).我正在尝试渲染一个呈现局部视图的MVC4 Razor视图.我的部分视图需要一些JavaScript.在我的部分视图中,当我在脚本部分中包含我的javascript,如下所示它似乎没有加载.

@section Scripts {
    <script type="text/javascript">
        $(function () {
            alert("test");
        });
    </script>
}
Run Code Online (Sandbox Code Playgroud)

如果我删除脚本部分它失败,因为当文档就绪代码运行时,jquery库(在我的_Layout.cshtml页面上捆绑并呈现)尚未加载.

<script type="text/javascript">
    $(function () {
        alert("test");
    });
</script>
Run Code Online (Sandbox Code Playgroud)

_Layout Page代码加载jquery库

@Scripts.Render("~/bundles/jquery")
@RenderSection("scripts", required: false)
Run Code Online (Sandbox Code Playgroud)

有没有人知道这个解决方案,还是我只是错误的方式?它破坏了我的头!

javascript asp.net-mvc-4 bundling-and-minification asp.net-optimization

9
推荐指数
1
解决办法
2万
查看次数

MVC4捆绑GZIP和标头

我正在使用Google PageSpeed和YSlow测试我的网站,而我使用MVC4捆绑包创建的捆绑包没有获得

Gzip(用gzip或deflate压缩资源可以减少通过网络发送的字节数)并且没有

Vary:Accept-Encoding标头(指示代理服务器缓存两个版本的资源:一个压缩,一个未压缩.这有助于避免公共代理无法正确检测到Content-Encoding标头的问题.)

以及如何在ISS上为整个脚本文件夹添加编码头.我知道有HTTP响应标头,然后添加自定义HTTP响应标头,

在此输入图像描述

但是这将在整个脚本文件夹和子文件夹中工作,以及在名称和值字段中放置什么.

怎么能解决这个问题.

问候.

gzip asp.net-mvc-4 asp.net-optimization

9
推荐指数
2
解决办法
8983
查看次数

Asp.Net MVC Bundle不使用现有的.min.js

我正在使用Asp.Net MVC 4和内置的捆绑支持.在BundleConfig.cs中,我在RegisterBundles方法中添加了默认的jquery:

bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                    "~/Scripts/jquery-{version}.js"));
Run Code Online (Sandbox Code Playgroud)

我也有两个jquery-1.8.0.jsjquery-1.8.0.min.js包含在我的项目中.

调试时一切正常,但是当我设置debug="false"测试捆绑时,它似乎正在缩小默认的jquery文件而不是使用已经存在的缩小版本.当我在项目中查看jquery的'min'版本时,它在顶部包含一个小注释,第一个方法定义是function(a,b).当我在浏览器中查看输出时,注释丢失,第一个方法定义不同.

有没有人见过这个问题?如何让捆绑机制使用现有的.min文件而不是重新缩小?

bundle asp.net-mvc-4 asp.net-optimization

9
推荐指数
2
解决办法
5411
查看次数

仅在MVC4 BundleConfig中缩小脚本

我在BundleConfig中添加以下ScriptBundle:

    bundles.Add(new ScriptBundle("~/bundles/javascript").Include(
        "~/Scripts/jquery-1.*",
        "~/Scripts/load-image.min.js",
        "~/Scripts/bootstrap.*",
        "~/Scripts/bootstrap-image-gallery.*",
        "~/Scripts/my.global.js"));
Run Code Online (Sandbox Code Playgroud)

这在我的_Layout.cshtml末尾被引用为:

@Scripts.Render("~/bundles/javascript")
Run Code Online (Sandbox Code Playgroud)

调试时我注意到这个脚本呈现的输出是:

<script src="/Scripts/jquery-1.8.2.js"></script>
<script src="/Scripts/bootstrap.js"></script>
<script src="/Scripts/bootstrap-image-gallery.js"></script>
<script src="/Scripts/my.global.js"></script>
Run Code Online (Sandbox Code Playgroud)

注意load-image.min.js脚本丢失了?我想要的是使用相同的缩小脚本,无论我是否正在调试.在发布条件下,脚本包含在捆绑的JS文件中.

我认为它正在看'min',寻找一个未缩小的版本,而不是找到一个,然后决定什么是最好的完全忽略它.辉煌.如果我复制了load-image.min.js,请将其命名为load-image.js,然后在BundleConfig中将其作为"load-image.*"引用.我发现它包含在两个配置中但是有什么意义去做?

我想我在这里错过了一些东西.我没有非缩小版本,坦率地说我并不关心它.它被我的Bootstrap图像库插件使用,没有别的.有什么想法吗?

asp.net-mvc bundle razor asp.net-mvc-4 asp.net-optimization

9
推荐指数
2
解决办法
8219
查看次数

MVC 3 System.Web.Optimization捆绑单个文件

在MVC3 C#中,我正在尝试新的System.Web.Optimization Bundles JSminify和CssMinify包(.NET 4.5框架的一部分).

我有一个主要的捆绑.在我的网站的一个页面上,我希望仅为该页面包含一个.js文件.我想像捆绑一样缩小它,但它不需要捆绑.

如何才能做到这一点?

  • 此外,此软件包的源和文档是否可用?

asp.net bundle asp.net-mvc-3 asp.net-4.5 asp.net-optimization

8
推荐指数
1
解决办法
7270
查看次数

.NET 4.5中的样式包和CSS中的图标

我开始使用.NET 4.5内置的缩小和捆绑来缩小和捆绑我的CSS和JavaScript.JavaScript缩小效果很好,然而,我在CSS缩小时遇到了麻烦.我使用下面的代码创建一个样式包 -

var myCss = new string[]
                                        {
                                            "~/Content/jquery.css",
                                            "~/Content/app.css",
                                        };
bundles.Add(new StyleBundle("~/bundles/MySiteCss/").Include(myCss ));
Run Code Online (Sandbox Code Playgroud)

然后我在.cshtml(razor文件)中引用它们,如下所示 -

@Styles.Render("~/bundles/MySiteCss/")
Run Code Online (Sandbox Code Playgroud)

它缩小了CSS文件.但是,如果CSS文件包含具有背景图像引用的样式,例如background-image:url('img/icon.png'),它会尝试从新位置加载此图标文件(从包名称派生) = /bundles/MySiteCss/img/icon.png

由于该位置中不存在该图标,因此不会加载并显示在页面上.

asp.net asp.net-mvc minify bundling-and-minification asp.net-optimization

8
推荐指数
1
解决办法
6658
查看次数

从Minifying中删除单个文件?

我正在尝试使用ASP.Nets BundleTable来优化一些javascript文件,但是遇到了一个问题,当代码被缩小时,特定的插件(jQuery-Timepicker)无法工作.看到这里.

捆绑代码目前类似于:

// Add our commonBundle
var commonBundle= new Bundle("~/CommonJS" + culture.ToString());

// JQuery and related entries.
commonBundle.Include("~/Scripts/jquery-1.7.2.js");
commonBundle.Include("~/Scripts/jquery-ui-1.8.22.js");
commonBundle.Include("~/Scripts/jquery.cookie.js");
commonBundle.Include("~/Scripts/jquery-ui/jquery-ui-timepicker-addon.js"); // This is the one that does not work when bundled

// JS Transformer
commonBundle.Transforms.Add(new JsMinify());

BundleTable.Bundles.Add(commonBundle);
Run Code Online (Sandbox Code Playgroud)

如果我删除该jquery-ui-timepicker-addon.js文件,然后将其单独包含在我的网页中,那么它可以正常工作.(否则我得到Uncaught TypeError: undefined is not a function错误).

我想知道我是否能以某种方式设置我的捆绑代码以跳过缩小这个文件(但仍然包含在捆绑中)?我一直在环顾四周,但没有提出任何解决方案.

bundle asp.net-mvc-3 asp.net-mvc-4 asp.net-optimization system.web.optimization

8
推荐指数
1
解决办法
1406
查看次数

阻止ASP.NET MVC捆绑包多次加载

是否有一个内置的方法来跟踪是否已经加载了一个包?我有几个编辑视图,例如需要jquery和jquery.Validate等库.我不需要在主布局页面上引用它.由于页面可能包含几个不同的条件库...理想情况下我希望@ scripts.Render知道我是否已经引用了一个库并阻止了它的重新加载.

干杯蒂姆

asp.net-mvc jquery asp.net-mvc-4 bundling-and-minification asp.net-optimization

7
推荐指数
2
解决办法
7329
查看次数