0

Я хочу связать все мои файлы JavaScript, чтобы он попал на сервер только один раз. Но с этим я столкнулся с проблемой.Я пытаюсь минимизировать файлы javascript, используя функцию mvc4 bundle

bundles.Add(new ScriptBundle("~/LayoutJs").Include(
       "~/Scripts/Libraries/jquery-1.8.2.min.js", 
       "~/Scripts/Libraries/kendo/2013.1.319/kendo.all.min.js", 
       "~/Scripts/Libraries/jquery.blockUI.js", 
       "~/Scripts/Libraries/knockout/knockout-2.1.0.js", 
       "~/Scripts/Libraries/knockout/knockout.mapping-latest.js", 
       "~/Scripts/Libraries/jquery.unobtrusive-ajax.min.js", 
       "~/Scripts/Libraries/tabStrip.js", 
       "~/Scripts/Libraries/underscore-min.js", 
       "~/Scripts/Libraries/knockout/knockout-kendo.min.js", 
       "~/Scripts/Common.js" 
       )); 

Я получаю сообщение об ошибке, что JQuery не определено, но я включен JQuery в верхней части пучка.

Как решить эту проблему?

+1

Добавить ** все ** Jquery JavaScript файлы ** ** перед тем Кендо файлов JavaScript. – Hemanth

ответ

0

Пожалуйста, убедитесь, что вы добавили скрипты, как показано ниже

bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery-1.7.1.min.js", 
"~/Scripts/jquery.validate.min.js", 
"~/Scripts/jquery.validate.unobtrusive.min.js")); 

И убедитесь, что указанное расслоение определяется в классе BundleConfig, как показано ниже:

public class BundleConfig 
{ 
public static void RegisterBundles(BundleCollection bundles) 
{ 


bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery-1.7.1.min.js", 
"~/Scripts/jquery.validate.min.js", 
"~/Scripts/jquery.validate.unobtrusive.min.js")); 
} 
} 

«*» подстановочные character используется для объединения файлов, находящихся в одном каталоге, и имеет один и тот же префикс или суффикс с его именем. Предположим, вы хотите, чтобы добавить все скрипты файлы, которые существуют с в директории «~/Script» и есть «JQuery» в качестве префикса, то вы можете создать пакет, как показано ниже:

bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include("~/Scripts/jquery*.js")); 

Все пакеты регистрируются в Application_Start случае Файл Global.asax вашего веб-приложения.

protected void Application_Start() 
{ 
BundleConfig.RegisterBundles(BundleTable.Bundles); 
// code 
} 
+0

При использовании с "BundleTable.EnableOptimizations = true;" то он отлично работает. но когда я пытаюсь использовать тот же код с «BundleTable.EnableOptimizations = false», он выдает ошибку, которая не определена jQuery –

+0

, если BundleTable.EnableOptimizations = false, тогда некоторые из файлов доступны, а некоторые нет. –

+1

@PrinceChopra это потому, что любой Файл .min 'не включен в режим отладки. Вам либо нужно иметь неминифицированную версию, либо просто переименовать уменьшенную версию, чтобы удалить «.min». – MikeSmithDev

4

Я считаю, это связано с тем, что вы пытаетесь объединить мини-файлы. Эти файлы будут проигнорированы пакетом MVC4.

Работа для этого - переименование файлов с использованием .min out. Или создайте свои собственные шаблоны игнорирования (см. Ссылку).

https://stackoverflow.com/a/12005272/1593273

Вы также можете обновить до 1,1-альфа1-релиз, в котором это было зафиксировано.

ASP.NET Web Optimization

+1

Они игнорируются только в режиме отладки. – MikeSmithDev