Scriptmanager Asp.Net Mvc - PullRequest
       16

Scriptmanager Asp.Net Mvc

17 голосов
/ 26 ноября 2008

Мне бы хотелось иметь некоторые функции ScriptManager в новой модели Asp.net MVC:

1 - Объединение скриптов
2- Разрешение разных путей для внешних файлов Javascript
3- Сжать и сжать Gzip

Здесь - это то, что я нашел, но я не уверен, что это лучший способ для подхода MVC. В целом, каков хороший подход для работы с кодом Javascript в модели MVC?

Ответы [ 5 ]

18 голосов
/ 26 ноября 2008

Может быть, вы могли бы просто создать новый контроллер 'Scripts' с различными действиями, обслуживающими различные комбинации сжатых файлов JS. Поскольку MVC разработан с использованием подхода, ориентированного на ресурсы, то есть URL-адреса теперь находятся в центре вашей модели программирования, почему бы не определить простые URI для ваших Javascripts?

Например, вы можете ссылаться на ваши файлы следующим образом:

<script src="http://your_domain/scripts/all"/>

Это вызовет ваше действие «все», в результате чего будут отправлены все сжатые файлы сценариев.

Конечно, вам сейчас придется кодировать объединение и сжатие или, возможно, повторно использовать Scriptmanager для внутреннего использования, я не знаю, возможно ли это.

Это всего лишь идея, в настоящее время я ссылаюсь на отдельные файлы javascript прямо на моих главных страницах.

10 голосов
/ 21 января 2009

Попробуйте это: http://www.codeplex.com/MvcScriptManager

MvcScriptManager предназначен для переноса некоторых ключевых функций, доступных в ToolkitScriptManager AjaxControlToolkit, в текущий ASP.NET MVC Framework. Вы сможете использовать его в качестве элемента управления в приложении ASP.NET MVC.

Особенности

  1. Комбинация скриптов (или конкатенация). Сценарии, объявленные с помощью MvcScriptManager, будут на лету объединены в один запрос файла сценария при визуализации страницы.
  2. Сценарий минимизации (или хруста) в режиме релиза. Процесс минимизации выполняется только один раз при первом запросе, который ссылается на конкретный скрипт. Последующие запросы будут использовать сжатое содержимое скрипта в кеше (подробнее см. # 5). Хруст может быть включен / отключен для каждого сценария.
  3. Отображение локализованных ресурсов для автономных файлов сценариев. Локализованные строки будут добавлены в скрипт, если указано.
  4. Поддержка настраиваемых настроек сжатия HTTP и срока действия при выводе сценариев.
  5. Кэширование скрипта с зависимостью от файла. Содержимое файла сценария кэшируется, поэтому рендеринг объединенного файла сценария будет намного более производительным. Зависимость кэша связана с физическим файлом, поэтому любое обновление скрипта в файловой системе будет немедленно отражено в кэше.
  6. Поддержка сценариев рендеринга в режиме отладки / выпуска в зависимости от работающей среды.
  7. Разрешение разных путей для файлов автономных скриптов.
  8. Поддержка нескольких MvcScriptManager на одной странице (или главной странице). Поддержите режимы Master и Slave, чтобы скрипты, объявленные с одним ScriptManager, могли быть перенесены на другой для рендеринга.
  9. Поддержка сценария веб-фермы ...
3 голосов
/ 02 мая 2009

Или как насчет включения самого ScriptManager в качестве единственного обитателя одиночного, раз в страницу <form runat="server">?

Как это: -

   <form runat="server">
      <asp:ScriptManager ID="ScriptManager1" runat="server" EnableScriptGlobalization="true">
      </asp:ScriptManager>
    </form>

У меня работает.

P.S. Вам нужно убедиться, что этот тег формы никогда не будет встроен в другую форму. Вложенные формы не работают.

0 голосов
/ 16 ноября 2012

MVC 4 теперь включает помощников по связыванию и минификации. Вы определяете все сценарии, которые входят в ваш пакет, а MVC позаботится о пакетировании, сжатии, очистке кэша и т. Д.

http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification

0 голосов
/ 09 ноября 2009

Нашел в этом исследовании почти такую ​​же проблему: Простой ScriptManager для ASP.NET MVC - написан после ответа на этот вопрос, поэтому добавлен для справки.

Прежде всего, я собираюсь использовать решение для грубой силы, то есть вставить все это на главную страницу (тем более, что теперь можно извлечь jQuery из CDN Microsoft), а затем мы собираемся исследовать варианты для более оптимальных решений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...