Вы можете сохранить сценарий в методе загрузки вашего элемента управления, хотя он действительно должен быть помещен в PreRender, потому что тогда вы можете включить его или не включать в него в зависимости от состояния элемента управления. Это спасло бы вас от ошибок JavaScript в будущем, где говорится: «Объект не может быть найден», потому что вы сделали элемент управления невидимым.
Причина, по которой вы получаете «Sys не определена», заключается в том, что ваш скрипт помещается перед загрузкой файла MicrosoftAjax.js. Попробуйте что-то вроде этого:
Dim yourScript as String = "Sys.Application.add_load(function() { /*code here*/ })"
ScriptManager.RegisterStartupScript(Page, Me.GetType(), "ScriptKey", yourScript, true)
В противном случае вы можете использовать Page.ClientScript зацепить в document ready event при использовании имен Sys не является обязательным требованием, но это звучит как из вашего вопроса, то есть.
Edit:
Вместо RegisterStartupScript вы, вероятно, ищет RegisterClientScriptBlock, извините, два имеют различные функциональные возможности.