Как эмулировать ScriptManager.Зарегистрировать Startupscript() в ASP.NET Проекте MVC
-
06-07-2019 - |
Вопрос
Я использую ASP.NET MVC project и jQuery для обработки асинхронных запросов.Иногда для асинхронного запроса мне нужно, чтобы фрагмент JavaScript инициализации был возвращен и выполнен вместе с фрагментом HTML (я хочу, чтобы этот JavaScript отображался на сервере).
На данный момент я использую свой собственный класс ScriptsHelper с методом RegisterStartupScript() (добавляет данные в HttpContext.Current.Элементы).Затем в global.asax HttpApplication.EndRequest() для асинхронных запросов я добавляю все зарегистрированные скрипты к выходным данным (заключенным в теги).jQuery.fn.load() успешно выполняет их, когда полученный HTML-код добавляется в DOM - это именно то, что мне нужно.Считаете ли вы, что это "правильное" (хорошее) решение, или, может быть, вы можете предложить что-то лучшее?Спасибо.
Решение
Я столкнулся с похожей ситуацией в проекте, прежде чем начал использовать jquery, и в итоге прибег к использованию eval ()
. Я возвращал фрагмент текста javascript как часть значения невидимого элемента DOM вместе с остальным HTML, который я вставлял в DOM. Р>
У меня было много проблем при отладке этого типа динамически генерируемого javascript в IE6, так что это решение сработало достойно для меня, потому что я мог проверить значение элемента DOM, который получал eval'd. Однако я всегда опасался использовать eval
.
Похоже, что ваше решение имеет разумную архитектуру для рендеринга на стороне сервера, в отличие от моего спагетти-кода, и эта техника выглядит так, как будто она соответствует духу jQuery.fn.load, так что я бы не стал беспокоиться много.
Другие советы
Да, я думаю, что jQuery вызывает eval() внутренне для вас - вы используете append?Я думаю, что в большинстве случаев этот метод работает довольно хорошо.Если данные, возвращаемые с сервера, находятся в списке, который повторяется, вы можете захотеть посмотреть на использование функции live, добавленной в jQuery 1.3, Она позволяет вам прикреплять событие ко всем текущим и будущим элементам, соответствующим вашему селектору.Оформите заказ на эти статьи:
Также в качестве чего-то еще следует рассмотреть инструмент для управления скриптами и css для asp.net mvc.Я использую это, и мне это нравится, поскольку оно объединяет файлы, а также сжимает их.Вы также можете настроить все это из своей веб-конфигурации.