RegisterClientScriptResource + панель обновления AJAX - PullRequest
0 голосов
/ 13 мая 2009

У меня есть проблема, которая действительно заставляет меня чувствовать себя глупым. У меня есть пользовательский элемент управления, который наследует текстовое поле. Это текстовое поле (по крайней мере, для этого примера) просто содержит файл .js, который встроен в .dll.

Короче говоря, прекрасно работает, если не на панели обновления AJAX. Поэтому я провел некоторое исследование и обнаружил, что вместо использования: Page.ClientScript.RegisterClientScriptResource я должен использовать ScriptManger.RegisterClientScriptResource - я сделал это в методе overdive render, но JavaScript по-прежнему не запускается.

Кто-нибудь знает, что я делаю не так?

Пример: у меня есть папка в моем проекте под названием Scripts - она ​​содержит myscript.js Моя сборка называется Jim.Bob.Controls

Я добавляю атрибуты к своим элементам управления, например: Attributes.Add ("onclick", "Test2 ();");

В режиме переопределения:

ScriptManager.RegisterClientScriptResource(this.Page, typeof(CustomTextBox), "Jim.Bob.Controls.Scripts.myscript.js");

Тем не менее, я все еще получаю сообщение об ожидаемом объекте.

Мне нужно, чтобы мое текстовое поле работало с AJAX и без него. Я импортировал System.Web.Extensions в свой проект для доступа к ScriptManger

Может кто-нибудь сказать мне, что я делаю не так? Опять же, все это работало нормально без AJAX, я поместил необходимые вещи в AssemblyInfo.cs (WebResource: ,,,, etc)

Заранее спасибо: -)

--- ОБНОВЛЕНИЕ --- Я вернул элемент управления, пытаясь его в не AJAX-сети, и у меня та же проблема. Не уверен, почему у меня есть проблема, у меня есть другой пользовательский элемент управления в той же сборке, который работает просто отлично - пусть они настроены точно так же, единственное отличие - тот, который работает, наследует WebControl, тот, который не наследует TextBox ... в той, которая работает, я испускаю HTML как Go и сделай это Где тот, который НЕ работает, у меня есть Attributes.Add ("onclick", "CustomFunction ();");

Кроме того, если я сделаю Attributes.Add ("onclick", "alert ('hello');"); работает нормально.

Извините за такой длинный пост.

1 Ответ

1 голос
/ 13 мая 2009

Попробуйте передать this вместо this.Page. ScriptManager будет выводить сценарии только для обновляемых элементов управления (дочерних элементов UpdatePanel).

Я только что заметил, что вы делаете это во время Render. Это слишком поздно Попробуйте вместо этого PreRender.

...