Где я могу разместить JavaScript при использовании пользовательского элемента управления asp.net? - PullRequest
4 голосов
/ 09 ноября 2009

У меня есть пользовательский элемент управления со ссылкой «Подробнее». При нажатии на эту ссылку я хочу, чтобы появился div, который дает пользователю больше информации.

Куда мне положить JavaScript? Он не работает при размещении в верхней части моего пользовательского элемента управления. Как вы обрабатываете JavaScript и jQuery, когда используете пользовательский элемент управления? У меня есть библиотека jQuery, включенная в мою главную страницу. Мои обычные страницы asp.net имеют JavaScript и те работают.

РЕДАКТИРОВАТЬ: Похоже, что способ кодирования на стороне клиента в пользовательском элементе управления состоит в том, чтобы вывести сценарий через сторону сервера, подобно тому, как работает сервер asp.net. Что разочаровывает, так это то, что jQuery так хорош, но все примеры строго встроены в страницу html / aspx. Есть ли ресурс для jQuery с asp.net, который я еще не нашел?

Ответы [ 6 ]

5 голосов
/ 09 ноября 2009

Используйте ClientScriptManager.RegisterStartUpScript , чтобы установить сценарии в конце страницы на стороне сервера. Или используйте готовое событие JQuery, чтобы убедиться, что dom загружен, а затем привяжите события на стороне клиента к своей ссылке.

RegisterStartupScript, регистрирует ваши скрипты в конце страницы, поэтому ваш скрипт загружается после загрузки всех элементов страницы.

Еще один вариант - использовать готовое событие JQuery, оно помогает вам ждать загрузки всех элементов DOM. Вы можете реализовать свою функцию готовности на встроенной или серверной стороне.

Ключевым моментом здесь является ожидание загрузки элементов DOM.

1 голос
/ 10 ноября 2009

Я предпочитаю помещать ссылку на файл .js, связанный с конкретным элементом управления, в файл .ascx

<script src="Js/myUserControl.js" type="text/javascript"></script>

РЕДАКТИРОВАТЬ: как примечание, вы можете поместить строку выше в нижней части вашего .ascx файла, чтобы сохранить ссылку вместе с пользовательским элементом управления - вместо того, чтобы поместить в файл .aspx.

1 голос
/ 09 ноября 2009

Есть много способов сделать это. Вы можете просто включить JavaScript в любом месте и настроить событие для этого клика.

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

http://bchavez.bitarmory.com/archive/2008/07/28/understanding-scriptresource-and-webresource-in-asp.net.aspx

Вы также должны иметь возможность добавлять теги в свой пользовательский элемент управления.

0 голосов
/ 23 декабря 2009

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

Первый вызов ScriptManager.RegisterClientScriptInclude с указанием пути к файлу сценария, а затем вызов * ScriptManager.RegisterStartupScript с функцией запуска в файле сценария.

protected void Page_Load(object sender, EventArgs e)
{
   ScriptManager.RegisterClientScriptInclude(
      this, GetType(), "formatterScript", ResolveUrl("~/js/formatter.js"));
   ScriptManager.RegisterStartupScript(
      this, GetType(), "formatTableFunction", "formatTable()", true);
}
0 голосов
/ 10 ноября 2009

если вы используете usercontrol с фронтом кода (ascx), просто поместите туда свой javascript (jquery?), Если нет, то вы можете отправить javascript в html либо вручную при рендеринге элемента управления (событие Render), либо через ClientScript.RegisterStartupScript вместо

0 голосов
/ 09 ноября 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...