Методы для динамического построения JavaScript на странице ASPX? - PullRequest
1 голос
/ 11 сентября 2009

У меня есть страница, на которую ссылается тег <script> со страницы на другом сайте. В скрипте src я передаю форму, которую я хочу, чтобы мой скрипт собирал (из таблицы БД), и div, куда должна идти динамически построенная форма. Страница вызова выглядит примерно так:

<div id="FormContainer"></div>
<script type="text/JavaScript" src="http://www.example.com/GenerateForm.aspx?FormId=1&div=FormContainer"></script>

GenerateForm.aspx содержит код, который считывает параметры QueryString для FormId и Div Id и выводит JavaScript, который будет создавать форму.

Мой вопрос такой. Каковы различные методы «вывода» JavaScript? Часть JavaScript является статической и может быть упакована во внешний файл .js, и у меня тоже есть jQuery. Но следует ли добавить это на странице разметки GenerateForm.aspx? Или я должен использовать ScriptManager?

А как насчет динамически создаваемого JavaScript? В настоящее время я просто использую Response.Write() для подтверждения концепции, но должен ли я заниматься чем-то другим? Использовать элемент управления Literal на странице и установить его значение? Использовать ScriptManager? Что-то еще?

Я знаю, что это подробный вопрос, так что спасибо заранее!

1 Ответ

1 голос
/ 11 сентября 2009

Если вы хотите использовать отдельный Javascript-файл, на который ссылаются, вы, вероятно, захотите это использовать файл Ashx. По сути, это всего лишь универсальный обработчик, который вы будете использовать для прямой записи в выходной поток без необходимости иметь дело с жизненным циклом страницы ASP.NET. Если вы добавляете базовый универсальный обработчик (.ashx) на свой сайт из диалогового окна «Добавить новый элемент», шаблон должен иметь достаточное направление, используя context.Response.Write() для динамического вывода Javascript.

ScriptManager более полезен, если вы хотите выводить отдельные строки Javascript, которые будут запускаться в определенное время, например, после запуска события. Затем вы можете сделать ScriptManager.RegisterClientBlock(this, this.GetType(), "CodeBlock", "alert('Button clicked');", true);, чтобы показать окно предупреждения клиента после нажатия кнопки, например.

Статические файлы должны обрабатываться именно так - статически. Сервер может обрабатывать кэширование и не вызывает ненужной обработки, если вы ссылаетесь на статический файл сценария непосредственно из тега сценария. Однако, если вам нужно динамически загружать статический скрипт, вы можете, например, создать литерал с тегом внутри. Таким образом, он использует кэшированную версию браузера статического файла.

...