我有一个让我感到愚蠢的问题。我有一个继承文本框的自定义控件。这个文本框(至少在这个例子中)只是一个嵌入在.dll中的.js文件。
长话短说,不在AJAX更新面板中时效果很好。所以我做了一些研究,发现不使用:Page.ClientScript.RegisterClientScriptResource,我应该使用ScriptManger.RegisterClientScriptResource - 我在overrdive渲染方法中完成了这个,但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:,,,,等)
提前致谢: - )
---更新--- 我恢复了控件,在非AJAX网络中尝试它,我遇到了同样的问题。不知道为什么我有一个问题,我在同一个程序集中有另一个自定义控件正常工作 - 让它们设置完全相同的方式,唯一不同的是工作继承WebControl,一个不继承TextBox ... 在正在工作的那个我发誓像Go这样做 哪一个不工作我有 Attributes.Add(“onclick”,“CustomFunction();”);
另外,如果我做Attributes.Add(“onclick”,“alert('hello');”); 它工作正常。
很抱歉这么长的帖子。
答案 0 :(得分:1)
尝试传递this
而不是this.Page
。 ScriptManager将仅为正在更新的控件(UpdatePanel的子节点)输出脚本。
我刚注意到你在渲染过程中这样做了。那太晚了。请尝试使用PreRender。