我开发了一个自定义控件(不是用户控件),它使用了一些 jQuery 脚本。
我已将控件的脚本作为嵌入资源嵌入到程序集中,并在 OnPreRender 事件的页面中将其注册,如下所示:
protected override void OnPreRender(EventArgs e)
{
string controlScript = "Namespace.MyScript.js";
ClientScriptManager csm = this.Page.ClientScript;
csm.RegisterClientScriptResource(typeof(ResourceFinder), controlScript );
base.OnPreRender(e);
}
此控件在部署到已安装 jQuery 库的项目中时有效,但如果 jQuery 库不可用怎么办。我将如何检查该库是否已经在项目中,如果没有,则将其也嵌入到程序集中并从那里拉出。我在想类似的事情:
protected override void OnPreRender(EventArgs e)
{
ClientScriptManager csm = this.Page.ClientScript;
// Here I would need to check if jQuery is already registered
// but there is no such method like: IsClientScriptResourceRegistered
if (csm.IsClientScriptResourceRegistered("jQuery"))
{
string jQueryLib = "Namespace.jquery-1.7.2.min.js";
csm.RegisterClientScriptResource(typeof(ResourceFinder), jQueryLib);
}
string controlScript = "Namespace.MyScript.js";
csm.RegisterClientScriptResource(typeof(ResourceFinder), controlScript );
base.OnPreRender(e);
}
我知道无论如何我都可以将 jQuery 库嵌入到程序集中,但是如果 jQuery 已经在项目中,那么我最终会得到一个页面,其中包含对库的两次调用,如下所示:
<!-- Project's jQuery lib -->
<script type="text/javascript" src="/scripts/jquery-1.7.2.min.js"></script>
<!-- DLL's duplicated jQuery lib: -->
<script type="text/javascript" src="/WebResource.axd?d=AP7y...r0bHQl"></script>
<!-- DLL Control's MyScript.js -->
<script type="text/javascript" src="/WebResource.axd?d=uTGR...ur15b"></script>
...这是我试图避免的。
有任何想法吗?