我最近在我的项目中添加了jquery.dataTables nuget包,我想在BundleConfig中捆绑必要的文件.由于此软件包安装在Scripts文件夹中的"DataTables-1.9.4"文件夹中,因此我在BundlesConfig中添加了以下行:
bundles.Add(new ScriptBundle("~/bundles/dataTables").Include(
"~/Scripts/DataTables-{version}/media/js/jquery.dataTables.js"));
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
System.Web.Optimization.dll中出现"System.ArgumentException"类型的异常,但未在用户代码中处理
当我将该行修改为:
bundles.Add(new ScriptBundle("~/bundles/dataTables").Include(
"~/Scripts/DataTables-1.9.4/media/js/jquery.dataTables.js"));
Run Code Online (Sandbox Code Playgroud)
它工作得很好.
所以我的问题是如何在JQuery包的情况下注入版本?这是在包本身的某个地方定义的,有没有办法让我解决这个问题?我讨厌每次更新dataTables nuget包时都必须更改我的bundle配置的想法...
我正在尝试使用Microsoft的Web优化框架呈现JavaScript包,如下所示:
@Scripts.Render("~/assets/bundle.js")
Run Code Online (Sandbox Code Playgroud)
并建立一个小包,像这样:
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new ScriptBundle("~/assets/bundle.js")
.Include(
"~/scripts/jquery-2.1.0.min.js",
"~/scripts/somescript.js"
));
...
}
Run Code Online (Sandbox Code Playgroud)
但是当启用优化时,它只会呈现相对URL,如下所示:
<script src="/assets/bundle.js?v=mGDOiNaiTrSfcNq41OoA7A_BcN8PrXuMbfl-TE84HVY1"></script>
Run Code Online (Sandbox Code Playgroud)
如何让脚本捆绑呈现绝对URL呢? 我找不到一种方法来查看MSDN上的文档.这是我最终会喜欢的:
<script src="http://my.site.com/assets/bundle.js?v=mGDOiNaiTrSfcNq41OoA7A_BcN8PrXuMbfl-TE84HVY1"></script>
Run Code Online (Sandbox Code Playgroud)
这是在框架中,还是我必须使用辅助方法Script.Url?
我在BundleConfig.cs文件中包含以下行:
bundles.Add(new ScriptBundle("~/bundles/jqueryajax").Include(
"~/Scripts/jquery.unobtrusive-ajax.min.js"));
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试在其他脚本中呈现它时,它被跳过了.
以下是我渲染脚本的方法:
@Scripts.Render(
"~/bundles/jquery",
"~/bundles/jqueryui",
"~/bundles/jqueryajax",
"~/bundles/jquerytree")
Run Code Online (Sandbox Code Playgroud)
这是输出HTML,省略了jqueryajax包:
<script src="/Scripts/jquery-1.9.1.js"></script>
<script src="/Scripts/jquery-ui-1.10.2.js"></script>
<script src="/Scripts/jquery.jstree.js"></script>
Run Code Online (Sandbox Code Playgroud) 捆绑有什么区别:
bundles.Add(new ScriptBundle("~/bundles/jquery")
.Include("~/Scripts/jquery-{version}.js","file2.js", "file3.js"));
Run Code Online (Sandbox Code Playgroud)
VS
bundles.Add(new ScriptBundle("~/bundles/jquery")
.Include("~/Scripts/jquery-{version}.js")
.Include("file2.js")
.Include("file3.js"));
Run Code Online (Sandbox Code Playgroud)
我可以在ONE include方法中放入许多脚本,或者我可以使用许多include方法.
我什么时候应该用什么?
在 Asp.Net MVC BundleConfig 中,如果我使用ScriptBundle它,则会显示此代码的以下错误:
代码:
bundles.Add(new ScriptBundle("~/node/GobiJs").Include(
"~/node_modules/...../test.js"
));
Run Code Online (Sandbox Code Playgroud)
错误:
但如果我用Bundle而不是ScriptBundle像
bundles.Add(new Bundle("~/node/GobiJs").Include(
"~/node_modules/...../test.js"
));
Run Code Online (Sandbox Code Playgroud)
效果很好。谁能告诉我有什么问题ScriptBundle,为什么它不起作用?
我们试图在MVC 4中获取ScriptBundle,以便在web.config中的debug = false时返回扩展的javascript列表.默认情况下,ScriptBundle会在debug = false时将javascript优化为一个调用.
目前,当您在web.config中设置debug = false时,ScriptBundle将组合并缩小 javascript文件,如下所示:
<script src="/AAA/Scripts/a?dfkjghakjsdfhglkjasdhfkljasdf"></script>
Run Code Online (Sandbox Code Playgroud)
我们需要Scriptbundle,当debug = false时,输出扩展的javascript,如下所示:
<script src="/AAA/Scripts/jquery.validate.unobtrusive.min.js"></script>
<script src="/AAA/Scripts/jquery.tipTip.js"></script>
Run Code Online (Sandbox Code Playgroud)
有没有办法关闭Scriptbundle优化?
为什么?当我们在网站上进行https重定向时,ScriptBundle优化的脚本链接不起作用(我们在链接上获得503 Forbidden)
asp.net-mvc minify asp.net-mvc-4 bundling-and-minification scriptbundle