Как использовать внешний файл JS в ScriptManager.RegisterStartupScript? - PullRequest
3 голосов
/ 29 марта 2012

У меня есть элемент управления, который находится на панели обновления. я хочу, чтобы мой код JavaScript запускался каждый раз, когда updatePAnel обновляется.

Я использую что-то вроде этого:

ScriptManager.RegisterStartupScript(this, GetType(), "my_script", "runFunction();", true);

проблема в том, что мой код js огромен, и я хочу поместить его в файл js и использовать его из файла. что я должен изменить в своем коде?

1 Ответ

11 голосов
/ 30 марта 2012

Вы можете использовать метод ScriptManager.RegisterClientScriptInclude:

ScriptManager.RegisterClientScriptInclude(
    updatePanel,
    updatePanel.GetType(),
    "a_key",
    "myScript.js"
);

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

Подробнее об этом методе см. http://msdn.microsoft.com/pt-br/library/bb337005.aspx

Но если ваш сценарий зависит от какого-либо другого сценария, лучше использовать метод ScriptManager.RegisterStartupScript, но вместо передачи тела сценария какпараметр, вы передаете весь тег <script> с адресом вашего скрипта:

ScriptManager.RegisterStartupScript(
    updatePanel,
    updatePanel.GetType(),
    "a_key",
    "<script type='text/javascript' src='my_script.js'></script>",
    false
);

Обратите внимание, что последний параметр, который устанавливает флаг addScriptTags, имеет значение false, что позволяет вам визуализировать весьтег с определенным атрибутом src.

...