2009-12-08 12 views
5

Sto scrivendo un controllo server che è una casella di ricerca con suggerimenti (quando l'utente inizia a digitare, le parole corrispondenti appariranno per loro da selezionare). Sto usando jquery e C#.Come incorporare JQuery nel controllo server personalizzato

Il controllo funziona correttamente quando includo il jquery Lib nella pagina su cui sto eseguendo il test. Tuttavia, non funzionerà quando tento di incorporare la lib nella DLL.

ho provato completamente incorporarlo e registrare lo script:

ClientScriptManager manager = this.Page.ClientScript; 
manager.RegisterClientScriptResource(typeof(Search), jqueryResource); //jqueryResource= SearchControl.javascript.jquery.js 

e sto anche provato solo l'aggiunta di un tag nell'intestazione della pagina che include il jquery:

string javascriptUrl = manager.GetWebResourceUrl(typeof(Search), jqueryResource); 
LiteralControl jquery = new LiteralControl(string.Format(javascriptInclude, jqueryUrl)); 
Page.Header.Controls.Add(jquery); 

Entrambi modi in cui si verificano errori javascript (oggetto previsto) durante il tentativo di ottenere informazioni dai controlli

var params = $("#searchBox").val(); //called on keyup when typing in textbox 

Qualcuno l'ha già fatto prima? È possibile? Qualcuno può fare luce su questo?

PS: gli assembly sono già registrati nel file AssemblyInfo.cs.

risposta

6

EDIT: Basta rileggere la tua domanda e ho realizzato che ho appena ripetuto quello che hai fatto. Tuttavia questa è la mia implementazione che funziona come previsto:

È necessario utilizzare RegisterClientScriptResource. Basta chiamare il seguente frammento (presa dalla mia classe statica ScriptRegisterHelper) in caso PreRender del controllo:

/// <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"); 
} 

E per il completamento, ecco l'implentation:

protected override void OnPreRender(EventArgs e) 
{ 
    if (!this.DesignMode) 
    { 

     // Register the JavaScript libraries 
     ClientScriptManager cs = this.Page.ClientScript; 
     ScriptRegisterHelper.RegisterJQuery(cs); 

    } 
} 

e il file AssemblyInfo:

[assembly: System.Web.UI.WebResource("MyProject.Resources.jquery.js", "text/javascript")] 
+2

Questo è esattamente ciò che ho fatto inizialmente e ancora non ha funzionato. Poi qualcosa scattò mentre continuavo a meditare su di esso. Ho guardato l'azione di creazione del file di script e indovina cosa? Esatto, ho dimenticato di impostare questo come una risorsa incorporata (pensi che lo farebbe quando registrerai gli assembly). Ad ogni modo, ora funziona come un incantesimo. Grazie per l'aiuto! –

+0

Sapevo che avrei dovuto dirlo anche io! Doh. – GenericTypeTea

+0

Grazie per questo promemoria sull'impostazione della risorsa da incorporare. Questo mi stava facendo impazzire. –

Problemi correlati