0

我有一个问题真的让我觉得很愚蠢。我有一个继承文本框的自定义控件。这个文本框(至少对于这个例子来说)只是有一个嵌入在 .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:,,,,etc)

提前致谢 :-)

--- 更新 --- 我恢复了控件,在非 AJAX 网络中尝试它,我遇到了同样的问题。不知道为什么我有问题,我在同一个程序集中有另一个自定义控件,它工作得很好 - 让它们以完全相同的方式设置,唯一的区别是正在工作的那个继承 WebControl,那个不继承 TextBox 。 ..在一个正在工作的地方,我像Go一样发出html并做它在不工作的地方我有Attributes.Add(“onclick”,“CustomFunction();”);

另外,如果我做 Attributes.Add("onclick", "alert('hello');"); 它工作正常。

抱歉发了这么长的帖子。

4

1 回答 1

1

尝试通过this而不是this.Page. ScriptManager 将只为正在更新的控件(即 UpdatePanel 的子级)输出脚本。

我刚刚注意到您在渲染期间正在执行此操作。为时已晚。请改用 PreRender。

于 2009-05-12T20:09:22.117 回答