Question

La base de contrôle Extender Ajax fournit la dépendance gestion? Je crée un ensemble de contrôles qui utilise quelques scripts de base utilisés par les comportements et d'ici Création d'un contrôle d'extendeur il sorte de regards je vais devoir inclure mon script de base dans tous les codes de contrôle. Il en va de la base d'extension servent le même script [un moment en cache] pour chaque contrôle ou même script est servi pour chaque contrôle.

Par exemple, je développe des contrôles qui dépendent de jQuery. Depuis que je développe des contrôles d'extension je vais devoir mettre en œuvre cette méthode de l'interface comme ci-dessous, notez le 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 };
}

Maintenant, je vais avoir le même script jquery dans un autre contrôle, donc ce que cela signifie qu'ils sont servis deux fois si les deux sont dans le contrôle même page? Aussi une autre question,

Comment faire la sortie de contrôle d'extension des scripts de production au lieu des scripts de débogage l'enregistrement aussi script avec ScriptManager est pas une option pour moi comme je l'utilise masterpage qui n'a pas besoin d'un gestionnaire de script.

Quelques spécifications:

Développé en VS2005

.NET 2.0, ASP.NET 2.0

Dépendance Script sur Sizzle, emile.js, spine.js ce sont des scripts de base requis pour toutes les commandes

Était-ce utile?

La solution

Je crois que le framework ASP.NET ne gère correctement les objets en double ScriptReference dans son processus de rendu depuis que les contrôles ASP.NET peuvent exister dans plusieurs instances sur votre page.

Par exemple, dans une page ASP.NET que vous pouvez faire:

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

ces deux contrôles reposent sur les mêmes scripts, mais le cadre ne les charge pas deux fois.

Dans votre situation, vous auriez probablement eu envie de faire quelque chose comme:

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;
}

Cela devrait vous permettre de servir soit les versions de votre fichiers JavaScript en fonction étant en modes Debug ou Release Debug ou Release (minified).

Je ne suis pas sûr de vos commentaires sur votre MasterPage pas besoin d'un ScriptManager. Je suppose que vous avez une sorte de mécanisme qui traite de la manipulation des responsabilités du ScriptManager comme appelant la méthode GetScriptReferences() sur vos commandes et la manipulation du rendu de ces balises de script.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top