如何将JQuery嵌入到自定义服务器控件中
问题描述:
我正在编写一个带有建议的搜索框的服务器控件(当用户开始输入时,会出现匹配的文字供他们选择)。我正在使用jQuery和C#。如何将JQuery嵌入到自定义服务器控件中
当我在测试的页面上包含jQuery Lib时,该控件工作正常。但是,当我尝试将DLL嵌入到DLL中时,它不起作用。
我试图完全嵌入它和注册脚本:
ClientScriptManager manager = this.Page.ClientScript;
manager.RegisterClientScriptResource(typeof(Search), jqueryResource); //jqueryResource= SearchControl.javascript.jquery.js
,我也在页面,其中包括jQuery的头部尝试过加入代码:
string javascriptUrl = manager.GetWebResourceUrl(typeof(Search), jqueryResource);
LiteralControl jquery = new LiteralControl(string.Format(javascriptInclude, jqueryUrl));
Page.Header.Controls.Add(jquery);
两个当试图从控件获取信息时,方法会导致javascript错误(对象预期)
var params = $("#searchBox").val(); //called on keyup when typing in textbox
以前有人做过这个吗?可能吗?有人可以对此有所了解吗?
PS:程序集已在AssemblyInfo.cs文件中注册。
答
编辑:只要重新读你的问题,并意识到我只是重复了你所做的。但是,这是我的实施,它按预期工作:
您需要使用RegisterClientScriptResource
。只需调用控件的PreRender事件下面的代码段(从我ScriptRegisterHelper静态类服用):
/// <summary>
/// Registers the jQuery client script to the page.
/// </summary>
/// <param name="cs">The ClientScriptManager to assign the script to.</param>
internal static void RegisterJQuery(ClientScriptManager cs)
{
cs.RegisterClientScriptResource(typeof(ScriptRegisterHelper),
"MyProject.Resources.jquery.js");
}
而完成,这里的implentation:
protected override void OnPreRender(EventArgs e)
{
if (!this.DesignMode)
{
// Register the JavaScript libraries
ClientScriptManager cs = this.Page.ClientScript;
ScriptRegisterHelper.RegisterJQuery(cs);
}
}
而且集信息文件:
[assembly: System.Web.UI.WebResource("MyProject.Resources.jquery.js", "text/javascript")]
这正是我最初做的,它仍然没有工作。然后点击一下,而我继续思考它。我看了脚本文件构建操作并猜猜是什么?没错,我忘了将其设置为嵌入式资源(您认为在注册程序集时会这样做)。无论如何,它现在就像一个魅力。谢谢你的帮助! – 2009-12-08 20:33:15
我知道我应该提到这一点!卫生署。 – GenericTypeTea 2009-12-08 21:15:55
感谢您提供关于将资源设置为嵌入式的提示。这让我疯狂。 – 2010-09-28 12:44:13