Как эмулировать ScriptManager.Зарегистрировать Startupscript() в ASP.NET Проекте MVC

StackOverflow https://stackoverflow.com/questions/828802

Вопрос

Я использую 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.Я использую это, и мне это нравится, поскольку оно объединяет файлы, а также сжимает их.Вы также можете настроить все это из своей веб-конфигурации.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top