构建自定义Web控件,如何检查资源文件是否已添加?

时间:2012-07-09 12:51:07

标签: c# asp.net

我正在构建自定义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结果。

2 个答案:

答案 0 :(得分:0)

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

实施例: this.Page.ClientScript.RegisterClientScriptInclude(“key”,Page.ClientScript.GetWebResourceUrl(this.GetType(),“yourscript.js”));

答案 1 :(得分:0)

使用ClientScriptManager.RegisterClientScriptBlock

参考:ClientScriptManager.RegisterClientScriptBlock

  

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

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

但是,如果要保存检查时间,它会提供检查脚本是否已注册的功能:IsClientScriptBlockRegistered