我工作的一个ASP.Net MVC 4应用程序和使用打包和minifiction渲染风格和脚本文件。
我有一个脚本文件(文件A )在另一个文件(文件B ),其通话功能,当我使用
@ Scripts.Render()
方法之前的文件B 所以它触发一个错误,并且脚本无法正常工作。
有没有办法强迫 @ Script.Render()
渲染链接
标签在一定的顺序,而无需使用为每个文件单独捆绑????
修改
我使用 IncludeDirectory
方法包括该文件夹中的所有脚本文件
公共类BundleConfig
{
公共静态无效RegisterBundles(BundleCollection包)
{
bundles.Add(新ScriptBundle(〜/包/ JS)。IncludeDirectory(
〜/脚本/ JS,
* .js文件));
}
}
解决方案
自己写的订购者的达林季米特洛夫在这个问题的答案:How我可以指定一个明确的ScriptBundle包括订单?
公共类MyBundleOrderer:IBundleOrderer
{
公共虚拟的IEnumerable< FileInfo的> OrderFiles(BundleContext的背景下,IEnumerable的< FileInfo的>文件)
{
//任何订货这里的逻辑
返回的文件;
}
}
I am working on an ASP.Net MVC 4 application and using Bundling and minifiction to render styles and script files.
I have a script file (File A) that call function in another file (File B) , when I am using
@Scripts.Render()
method it render link
tag for File A before File B so it fire an error and the script not work correctly.
Is there any way to force @Script.Render()
to render link
tags in certain order without using separate bundle for each file????
EDIT
I am using IncludeDirectory
method to include all script files in that folder
public class BundleConfig
{
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new ScriptBundle("~/bundles/js").IncludeDirectory(
"~/Scripts/js",
"*.js"));
}
}
解决方案
Write your own orderer as Darin Dimitrov answer in this question: How can I specify an explicit ScriptBundle include order?
public class MyBundleOrderer : IBundleOrderer
{
public virtual IEnumerable<FileInfo> OrderFiles(BundleContext context, IEnumerable<FileInfo> files)
{
//any ordering logic here
return files;
}
}