Попытка заставить Telerik ScriptRegistrar загрузить скрипты Telerik и пользовательский скрипт - PullRequest
1 голос
/ 18 августа 2011

Я использую последнюю версию расширений Telerik MVC с моим бритвенным приложением ASP.NET MVC 3.Я также скачал последнюю версию jQuery.

У меня есть файл jQuery в другом каталоге относительно того, что по умолчанию поставляется с Visual Studio.Причина этого в том, что я скачал последнюю версию jQuery jquery-1.6.2.min.js.Мои каталоги контента и скриптов Telerik MVC находятся в другом каталоге.Что касается того, что я видел, для сценариев Telerik сначала должен быть загружен файл jQuery.Я удалил каталоги контента и скриптов, которые поставляются по умолчанию с приложением ASP.NET MVC.

Каталог скриптов Telerik:

~/Assets/telerikaspnetmvc/2011.2.712/Scripts/

Мой каталог jQuery:

~/Assets/JavaScripts/jQuery/

Я изменил ScriptRegistrar на приведенный ниже:

@(Html.Telerik().ScriptRegistrar()
   .DefaultGroup(group => group
      .DefaultPath("~/Assets/telerikaspnetmvc/2011.2.712/Scripts/")
      .Compress(true)
   )
   .Scripts(scripts => scripts
      .AddGroup("JavaScriptAssetLocation", group => group
         .DefaultPath("~/Assets/JavaScripts/jQuery/")
         .Add("jquery-1.6.2.min.js")
         .Compress(true)
      )
   )
   .jQuery(false)
)

Это дало мне ошибку.Я поменял местами 2, чтобы он мог сначала прочитать jQuery, как показано ниже, но он все равно сначала загружает файлы JavaScript Telerik по умолчанию, что приводит к ошибкам.Это измененный код:

@(Html.Telerik().ScriptRegistrar()
   .Scripts(scripts => scripts
      .AddGroup("JavaScriptAssetLocation", group => group
         .DefaultPath("~/Assets/JavaScripts/jQuery/")
         .Add("jquery-1.6.2.min.js")
         .Compress(true)
      )
   )
   .DefaultGroup(group => group
      .DefaultPath("~/Assets/telerikaspnetmvc/2011.2.712/Scripts/")
      .Compress(true)
   )
   .jQuery(false)
)

Что я здесь не так делаю?Пожалуйста, предоставьте примеры кода относительно того, как это должно быть сделано.

Еще один вопрос.Нужно ли указывать Compress (true) для каждой группы или достаточно один раз?А jQuery (false) нужно указывать где?Только после DefaultGroup?Или где-нибудь?

1 Ответ

4 голосов
/ 19 августа 2011

Я думаю, что проще всего было бы сделать следующее:

@(Html.Telerik().ScriptRegistrar().DefaultGroup(group => group
  .DefaultPath("~/Assets/telerikaspnetmvc/2011.2.712/Scripts/").Combined(true)
  .Compress(true)).jQuery(false))

Извините, если это выглядит немного сжатым - стиль фрагмента кода отказался применяться с другими настройками.В любом случае, после того, как вы это сделаете, зарегистрируйте в разделе заголовка вашей страницы следующее:

<script src="@Url.Content("~/Assets/JavaScripts/jQuery/jquery-1.6.2.min.js")" type="text/javascript"></script>

Это будет правильно ссылаться на вашу собственную версию jQuery, гарантируя, что DefaultPath группы по умолчанию будет изменен.

Что касается использования сжатия здесь, я не думаю, что это будет много.Это действительно хорошо только в том случае, если вы используете .Combined (true) в группе, в которой есть несколько добавляемых сценариев (например, группа по умолчанию для компонентов Telerik).Если вы просто используете один файл (jquery-1.6.2.min.js), в этом нет необходимости.Итак, просто убедитесь, что вы используете .Combined (true) (я должен был добавить его выше) всякий раз, когда вы хотите сжать объединенную группу.Это необходимо добавить для каждой группы.

...