У меня есть проблема, которая действительно заставляет меня чувствовать себя глупым. У меня есть пользовательский элемент управления, который наследует текстовое поле. Это текстовое поле (по крайней мере, для этого примера) просто содержит файл .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');");
работает нормально.
Извините за такой длинный пост.