Pregunta

¿La base de control de extensor AJAX proporciona gestión de dependencia? Estoy creando un conjunto de controles que utiliza algunos scripts base utilizados por los comportamientos y desde aquí Creando un control de extensor Es una especie de aspecto, tendré que incluir mi script base en cada código de control. También la base de extensor sirve el mismo script [uno en caché] para cada control o el mismo script se sirve para cada control.

Por ejemplo, estoy desarrollando controles que dependen de jQuery. Dado que estoy desarrollando controles de extensor, tendré que implementar este método desde la interfaz como a continuación, ¡observe el 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 };
}

Ahora tendré el mismo script jQuery en otro control, entonces ¿esto significa que se sirven dos veces si ambos control están en la misma página? También otra pregunta,

¿Cómo hacer que el control de extensor salga los scripts de producción en lugar de los scripts de depuración que también registra script con scriptManager no es una opción para mí, ya que uso maestropage que no necesito un administrador de script?

Algunas especificaciones:

Desarrollado en VS2005

.NET 2.0, ASP.NET 2.0

Dependencia del script en Sizzle, emile.js, spine.js Estos son scripts base necesarios para todos los controles

¿Fue útil?

Solución

Creo que el marco ASP.NET se maneja correctamente duplicado ScriptReference Los objetos en su proceso de representación ya que los controles ASP.NET pueden existir en múltiples instancias en su página.

Por ejemplo, en una página ASP.NET puede hacer:

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

Ambos controles dependen de los mismos scripts, pero el marco no los carga dos veces.

En tu situación, probablemente querrás hacer algo como:

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

Esto debería permitirle servir a las versiones de depuración o liberación (minificada) de sus archivos JavaScript dependiendo de estar en modos de depuración o lanzamiento.

No estoy seguro de que tu comentario sobre tu maestro no necesite un ScriptManager. Asumiré que tienes algún tipo de mecanismo que trata con el manejo de las responsabilidades del ScriptManager Como llamar al GetScriptReferences() Método en sus controles y manejando la representación de esas etiquetas de script.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top