Как встроить javascript непосредственно в свой пользовательский контроль ASP.net?

Я создаю свой первый пользовательский элемент управления, и я хотел бы упаковать javascript, необходимый для элемента управления с помощью сборки, поэтому конечному пользователю не нужно беспокоиться о включении зависимостей. Я следил за учебником Скотта Митчелла (http://aspnet.4guysfromrolla.com/articles/080906-1.aspx), но я не могу заставить его работать правильно.

Вот что я сделал до сих пор:

Я создал файл CollapsiblePanel.js, который содержит следующую функцию:

function TogglePanel(panelId) {
    //    $(panelId + ' .PanelContent').toggle();
    alert(panelId);
}

В панели свойств я установил действие Build на "Embedded Resource". Этот файл находится в каталоге scripts/внутри моего проекта библиотеки классов. Корневое пространство имен моего проекта - webstation.WebControls, поэтому, если мое понимание правильное, я должен ссылаться на файл js через "webstation.WebControls.scripts.CollapsiblePanel.js"

Я добавил следующую строку непосредственно перед объявлением класса для настраиваемого элемента управления:

<Assembly: WebResource("webstation.WebControls.scripts.CollapsiblePanel.js", "text/javascript")>

Я переопределил событие OnPreRender в своем пользовательском элементе управления и добавил следующее:

Protected Overrides Sub OnPreRender(ByVal e As System.EventArgs)

    Page.ClientScript.RegisterClientScriptInclude("wsWebControlsCollapsiblePanel", _
                  Page.ClientScript.GetWebResourceUrl(Me.GetType(), "webstation.WebControls.scripts.CollapsiblePanel.js"))

    MyBase.OnPreRender(e)

End Sub

Когда я делаю свой контроль, у меня есть кнопка с функцией "TogglePanel (this.id)"; в событии onclick, но когда я нажимаю кнопку, я получаю сообщение о том, что функция не определена. Если кто-нибудь знает, как я могу начать использовать встроенный javascript, я бы очень благодарен за помощь,

Mike

1
задан mclark1129 15 окт. '09 в 18:43
источник поделиться
1 ответ

Нашел,

Проблема заключалась в том, что я включил "скрипты" в имя ресурса, чтобы у меня была "webstation.WebControls.scripts.CollapsiblePanel.js"

Я решил попробовать, чтобы у меня было: "Webstation.WebControls.CollapsiblePanel.js"

и это сделало трюк.

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

Mike

0
ответ дан mclark1129 16 окт. '09 в 19:22
источник поделиться

Другие вопросы по меткам или Задайте вопрос