Вчера потратил н -ое кол-во времени чтоб разобраться(к слову в мсдн очень криво этот вопрос описан) а в инете инфа была только на одном форуме, да и то лишь кроха... Допустим пишем мы контрол какой то и у нас возникло желание воспользоваться джаваскриптом - мы конечно можем прямо хардкодом написать что то такое(из мсдн):
if (!cs.IsClientScriptBlockRegistered(cstype, csname2)) { StringBuilder cstext2 = new StringBuilder(); cstext2.Append("<script type=text/javascript> function DoClick() {"); cstext2.Append("Form1.Message.value='Text from client script.'} </"); cstext2.Append("script>"); cs.RegisterClientScriptBlock(cstype, csname2, cstext2.ToString(), false); }
но имхо это только мусор в коде.... можно сделать гораздо красивее: 1. Добавляем джаваскрипт файл в ресурсы сборки 2. В свойствах добавленного джаваскрипт файла устанавливаем Build Action:Embedded Resource 3. В AssemblyInfo.cs добавляем такой атрибут [assembly: WebResource("Controls.Resources.Script_include.js", "application/x-javascript")] - поясняю: Controls - имя сборки, Resources - папка в которой лежит мой файл, Script_include.js - сам файл. 4. в контроле добавляем такой код:
protected override void OnPreRender(EventArgs e) { base.OnPreRender(e); Page.ClientScript.RegisterClientScriptResource(typeof(MyControl), "Controls.Resources.Script_include.js"); }
Все теперь в на вашей странице вы можете вызывать любые функции из файла Script_include.js Надеюсь данная заметка поможет вам разобраться с этим простым но мало документированным вопросом.
|