2009-12-08 50 views
5

我正在編寫一個帶有建議的搜索框的服務器控件(當用戶開始輸入時,會出現匹配的文字供他們選擇)。我正在使用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文件中註冊。

回答

6

編輯:只要重新讀你的問題,並意識到我只是重複了你所做的。但是,這是我的實施,它按預期工作:

您需要使用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")] 
+2

這正是我最初做的,它仍然沒有工作。然後點擊一下,而我繼續思考它。我看了腳本文件構建操作並猜猜是什麼?沒錯,我忘了將其設置爲嵌入式資源(您認爲在註冊程序集時會這樣做)。無論如何,它現在就像一個魅力。謝謝你的幫助! – 2009-12-08 20:33:15

+0

我知道我應該提到這一點!衛生署。 – GenericTypeTea 2009-12-08 21:15:55

+0

感謝您提供關於將資源設置爲嵌入式的提示。這讓我瘋狂。 – 2010-09-28 12:44:13

相關問題