RegisterClientScriptResource + AJAX更新面板

时间:2009-05-12 20:01:12

标签: asp.net ajax custom-controls

我有一个让我感到愚蠢的问题。我有一个继承文本框的自定义控件。这个文本框(至少在这个例子中)只是一个嵌入在.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');”); 它工作正常。

很抱歉这么长的帖子。

1 个答案:

答案 0 :(得分:1)

尝试传递this而不是this.Page。 ScriptManager将仅为正在更新的控件(UpdatePanel的子节点)输出脚本。

我刚注意到你在渲染过程中这样做了。那太晚了。请尝试使用PreRender。