0

我正在构建自定义 Web 控件,并且正在使用 js 和 css。
Js 和 Css 文件嵌入在控件的 dll 中。
问题是,当我多次将此控件添加到页面时,资源(js 和 css 文件)再次添加时,有没有办法检查这些文件是否已添加?

请注意,此控件可以添加到任何其他容器控件(如 div): divId.Controls.Add(myCustomControl);
所以我需要一种在页面的所有子控件中搜索 ID 的方法

谢谢。

UPDATE1: 我正在使用它来将 js 文件添加到容器中:

var plh = new PlaceHolder();
var js = new HtmlGenericControl("script");
jsID = "stacks";
js.Attributes.Add("src", Page.ClientScript.GetWebResourceUrl(typeof(MyControlClass), "MyControlCSFileName.ScriptFolder.stacks.js"));
js.Attributes.Add("type", "text/javascript");
js.EnableViewState = false;
plh.Controls.Add(js);
plh.RenderControl(writer);  

UPDATE2:
有时我在服务器上呈现控件并使用 Ajax 返回它的 html 结果。

4

2 回答 2

0

使用 Page.ClientScript.RegisterClientScriptInclude 注册你的 JS

示例:this.Page.ClientScript.RegisterClientScriptInclude("key", Page.ClientScript.GetWebResourceUrl(this.GetType(), "yourscript.js"));

于 2012-07-09T13:00:27.280 回答
0

利用ClientScriptManager.RegisterClientScriptBlock

参考:ClientScriptManager.RegisterClientScriptBlock

客户端脚本由其密钥和类型唯一标识。具有相同键和类型的脚本被认为是重复的。页面中只能注册一个具有给定类型和密钥对的脚本。尝试注册已注册的脚本不会创建该脚本的副本。

您不需要检查重复项,因为 asp.net 只会添加一个实例。

但是,如果您想节省检查时间,它确实提供了检查脚本是否已注册的功能:IsClientScriptBlockRegistered.

于 2012-07-10T08:10:53.633 回答