Domanda

La base di controllo Ajax Extender forniscono la dipendenza di gestione? Sto creando una serie di controlli che utilizza alcuni script di base utilizzati dai comportamenti e da qui Creazione di un controllo Extender è sorta di sguardi dovrò includere il mio script di base in ogni singolo codice di controllo. Così fa la base extender servire lo stesso copione [uno cache] per ogni controllo o stesso script è servita per ogni controllo.

Per esempio Sto sviluppando controlli che dipendono da jQuery. Dato che io sono lo sviluppo di controlli extender dovrò implementare questo metodo dall'interfaccia come qui di seguito, notare lo script jquery!

protected override IEnumerable<ScriptReference> GetScriptReferences()
{
    ScriptReference reference = new ScriptReference();
    reference.Path = ResolveClientUrl("jQuery.js");
    reference.Path = ResolveClientUrl("FocusBehavior.js");
    return new ScriptReference[] { reference };
}

Ora dovrò stesso script jquery in un altro controllo, quindi questo significa che sono serviti due volte se sia il controllo sono nella stessa pagina? Anche un'altra domanda,

Come rendere l'uscita di controllo estensione degli script di produzione al posto degli script di debug Anche la registrazione script con ScriptManager non è un'opzione per me come io uso masterpage che non ha bisogno di un gestore di script.

Alcune specifiche:

Sviluppato in VS2005

.NET 2.0, ASP.NET 2.0

Dipendenza Script su Sizzle, emile.js, spine.js questi sono gli script di base richieste per tutti i controlli

È stato utile?

Soluzione

Credo che il framework ASP.NET non gestisce correttamente gli oggetti ScriptReference duplicati nel suo processo di rendering in quanto possono esistere controlli ASP.NET in più istanze sulla tua pagina.

Per esempio, in una pagina ASP.NET che puoi fare:

<act:Calendar runat="server" ID="calendar1"/>
<act:Calendar runat="server" ID="calendar2"/>

entrambi questi controlli si basano sugli stessi script, ma il quadro non caricare due volte.

Nella tua situazione, si sarebbe probabilmente vuole fare qualcosa di simile:

protected override IEnumerable<ScriptReference> GetScriptReferences()
{
    List<ScriptReference> references = new List<ScriptReference>();

    #if DEBUG
    // Load Debug Version
    references.Add(new ScriptReference(ResolveClientUrl("~/Path_To_Your_Debug_JS.js"));     
    #else
    // Load Minified Version
    references.Add(new ScriptReference(ResolveClientUrl("~/Path_To_Your_Release_JS.js"));
    #endif

    return references;
}

Ciò dovrebbe consentire di servire sia il debug o di uscita (versioni minified) di Javascript file a seconda di essere sia in modalità debug o di uscita.

Non sono sicuro circa i suoi commenti su tua MasterPage non aver bisogno di un ScriptManager. Darò per scontato di avere una sorta di meccanismo che si occupa di gestire le responsabilità del ScriptManager come chiamare il metodo GetScriptReferences() sui vostri controlli e la gestione del rendering di questi tag script.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top