使用JQuery作为ASP.NET嵌入式Web资源
我有一个ASP.NET服务器控件,它依赖于JQuery来实现某些功能。我已尝试添加为webresource 我的问题是我包含jquery文件的方法会将其添加到正文中,或者确切地说是表单中:使用JQuery作为ASP.NET嵌入式Web资源,asp.net,jquery,embedded-resource,webresource,Asp.net,Jquery,Embedded Resource,Webresource,我有一个ASP.NET服务器控件,它依赖于JQuery来实现某些功能。我已尝试添加为webresource 我的问题是我包含jquery文件的方法会将其添加到正文中,或者确切地说是表单中: this.Page.ClientScript.RegisterClientScriptInclude(...) 替代方法是将其作为文本添加到head标记中: LiteralControl include = new LiteralControl(jslink); this.Page.Header.Contr
this.Page.ClientScript.RegisterClientScriptInclude(...)
替代方法是将其作为文本添加到head标记中:
LiteralControl include = new LiteralControl(jslink);
this.Page.Header.Controls.Add(include);
但是,问题是头部中使用JQuery的任何现有代码src都会失败,因为JQuery之后会加载(ASP.NET会将文本添加到控件树的底部)
有没有一种实用的方法可以使JQuery成为一种嵌入式资源,但首先加载到头部?或者我应该现在放弃。如果您想打包jQuery并将其嵌入您自己的服务器控件中,您应该使用ScriptManager将其提供给客户端。从我的头顶上,你必须:
[assembly: WebResource("<Your Server Control namespace>.jQuery.js", "application/x-javascript")]
[程序集:WebResource(“.jQuery.js”,“application/x-javascript”)]
protected override IEnumerable<ScriptReference>
GetScriptReferences()
{
return new ScriptReference[] {
new ScriptReference("<Your Server Control namespace>.jQuery.js", this.GetType().Assembly.FullName),
};
}
protectedoverride IEnumerable
GetScriptReferences()
{
返回新的脚本引用[]{
新的ScriptReference(“.jQuery.js”,this.GetType().Assembly.FullName),
};
}
protected override IEnumerable<ScriptDescriptor> GetScriptDescriptors()
受保护的重写IEnumerable GetScriptDescriptor()
这将确保依赖项的正确顺序(即jQuery将可用于您自己的客户端脚本)。更新: 一种简单得多的方法是在脚本中动态添加脚本标记,并指向google代码宿主。e、 g
function include_dom(script_filename) {
var html_doc = document.getElementsByTagName('head').item(0);
var js = document.createElement('script');
js.setAttribute('language', 'javascript');
js.setAttribute('type', 'text/javascript');
js.setAttribute('src', script_filename);
html_doc.appendChild(js);
return false;
}
include_dom("http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js");
该函数取自
Crecentfresh把我推向了正确的方向,我也发现
我的问题仍然存在,ScriptManager在头部脚本之后添加了引用,但我认为这是一个无法解决的问题。我选择了回答自己的问题,但也对crescentfresh投了更高的票。我可以问一下,为什么您不只是将jquery文件添加到项目中,并使用脚本标记引用它?可以这样做,目前就是这样,但想法是服务器控件是自包含的,您可能应该使用jquery noConflict()并在您自己的客户端名称空间中公开它。IE MyNameSpace.$=jQuery.noConflict(),以避免干扰外部页面可能正在使用的$。我必须尝试一下,我们遇到了相同的问题。这将我推向了正确的方向,我还找到了-IScriptControl.GetScriptReferences_方法。尽管如此,我的问题仍然存在,ScriptManager在头中的脚本之后添加引用。