Scriptmanager Asp.Net Mvc
-
11-07-2019 - |
Вопрос
Я бы хотел использовать некоторые функции ScriptManager в новой модели Asp.net MVC:
1- Объединение скриптов
2- Разрешение различных путей для внешних файлов Javascript
3- Сокращение до минимума и сжатие в формате Gzip
Здесь это то, что я нашел, но я не уверен, что это лучший способ для подхода MVC.В общем, каков хороший подход к работе с кодом Javascript в модели MVC?
Решение
Возможно, вы могли бы просто создать новый контроллер 'Scripts' с различными действиями, обслуживающими различные комбинации сжатых файлов JS. Поскольку MVC разработан с использованием подхода, ориентированного на ресурсы, то есть URL-адреса теперь находятся в центре вашей модели программирования, почему бы не определить простые URI для ваших Javascripts?
Например, в своих представлениях вы можете ссылаться на свои файлы следующим образом:
<script src="http://your_domain/scripts/all"/>
Это вызовет ваше действие «все», в результате чего будут отправлены все сжатые файлы сценариев.
Конечно, вам сейчас придется кодировать объединение и сжатие или, возможно, повторно использовать Scriptmanager, я не знаю, возможно ли это.
Это всего лишь идея, в настоящее время я ссылаюсь на отдельные файлы javascript прямо на моих главных страницах.
Другие советы
Попробуйте это: http://www.codeplex.com/MvcScriptManager
MvcScriptManager предназначен для переноса некоторых ключевых функций, доступных в ToolkitScriptManager AjaxControlToolkit, в текущий ASP.NET MVC Framework. Вы сможете использовать его в качестве элемента управления в приложении ASP.NET MVC.
Особенности
<Ол>Комбинация скриптов (или конкатенация). Сценарии, объявленные с помощью MvcScriptManager, будут на лету объединены в один запрос файла сценария при визуализации страницы. Сценарий минимизации (или хруста) в режиме выпуска. Процесс минимизации выполняется только один раз при первом запросе, который ссылается на конкретный скрипт. Последующие запросы будут использовать сжатое содержимое скрипта в кеше (подробнее см. # 5). Хруст может быть включен / отключен для каждого сценария. Визуализируйте локализованные ресурсы для автономных файлов сценариев. Локализованные строки будут добавлены в сценарий, если указано. Поддержка настраиваемых параметров сжатия HTTP и срока действия при выводе сценариев. Кэширование скрипта с зависимостью от файла. Содержимое файла сценария кэшируется, так что рендеринг объединенного файла сценария будет намного более производительным. Зависимость кэша связана с физическим файлом, поэтому любое обновление скрипта в файловой системе будет немедленно отражено в кэше. Поддержка сценариев рендеринга в режиме отладки / выпуска в зависимости от работающей среды. Разрешение разных путей для файлов автономных скриптов. Поддержка нескольких MvcScriptManager на одной странице (или главной странице). Поддержите режимы Master и Slave, чтобы скрипты, объявленные с одним ScriptManager, могли быть перенесены на другой для рендеринга. Поддержка сценария веб-фермы ... Ол>
Или как насчет того, чтобы включить сам ScriptManager в качестве единственного обитателя одиночного, одноразового приложения для каждой страницы <form runat="server">
?
Вот так:-
<form runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnableScriptGlobalization="true">
</asp:ScriptManager>
</form>
У меня это работает.
P.S.Вам нужно будет убедиться, что этот тег формы никогда не будет встроен в другую форму.Вложенные формы не работают.
Обнаружил, что это исследование во многом аналогично проблеме: Простой ScriptManager для ASP.NET MVC - написанный после ответа на этот вопрос, поэтому добавлен для справки.
Вначале я использую решение для грубой силы, т.е. вставляю все это в главную страницу (тем более, что теперь можно извлечь jQuery из CDN Microsoft), а затем мы собираемся исследовать варианты более оптимальных решений. р>
MVC 4 теперь включает помощников по связыванию и минификации. Вы определяете все сценарии, которые входят в ваш пакет, а MVC позаботится о пакетировании, сжатии, очистке кэша и т. Д.
http://www.asp.net/mvc/ учебники / MVC-4 / пакетирования-и-минификация