2009-10-26 3 views
0

В настоящее время я пытаюсь найти хороший способ загрузить файлы javascript только тогда, когда они мне понадобятся. Для этого я создал несколько HtmlHelpers для faceboxlinks, datepickerfields, tinymcefields и других скриптов, которым нужно внешнее js и выражение jquery инициализации. В этих помощниках я запускаю скрипт с помощью jQuery's getScript() и использую его функцию обратного вызова для запуска сценария.Отслеживание загруженных сценариев на страницу с помощью ViewData

Теперь моя проблема возникает. Моя первоначальная мысль заключалась в том, чтобы отслеживать эти сценарии в списке строк и помещать их в htmlHelper.ViewData. Но, к сожалению, это не удается. По какой-то причине эта точка зрения не передается в частичные представления или что-то подобное; он не ведет список.

Есть ли другое место, где я могу глобально хранить свой список строк вместо ViewDataDictionary помощника, или я использую эту ViewData не так, и должен ли я передать ее по какой-то причине? Любые разъяснения или помощь будут очень благодарны!

ответ

0

Вы можете использовать коллекцию HttpContext.Current.Items для хранения данных, имеющих отношение к текущему запросу.

Хотя, я думаю, вы должны перепроектировать свою архитектуру, чтобы она не опиралась на глобальные переменные (которые ViewData и Items в конечном итоге находятся в вашем случае).

Посмотрите на это: How do I add JavaScript to an ASP.NET MVC View? и тому подобное.

+0

Спасибо! Использование HttpContext.Current.Items сделал трюк. На данный момент это решает мою проблему. В чем конкретно могут быть недостатки использования глобальных переменных в таких ситуациях? Я не очень увлекаюсь идеей определения и инициализации своих сценариев во всех используемых вами целях. – Leon

+0

Когда вы используете глобальную переменную, вы вообще пропускаете архитектурные ограничения, поэтому теоретически сложнее поддерживать такой код. Вам не нужно инициализировать все ваши сценарии сразу, вы можете сделать это по требованию, как и сейчас, но добавьте код инициализации к соответствующему заполнителю в контейнере, который затем добавляется на главную страницу. Таким образом, ваша главная страница не должна «знать» что-либо о представлениях. –

+0

Вижу, спасибо, что очистил это :) – Leon