Pregunta

Tengo dos características de SharePoint, cada implementado de forma idéntica (véase más adelante), que se suman a los controles de un control delegado en la cabecera de mis páginas. Uno de los controles depende del otro (uno es la biblioteca jQuery, y el otro depende de jQuery), sin embargo, cuando se representan los controles, el orden de los controles es incorrecta. ¿Cómo se especifica el orden en que estos controles se prestan en?

El control (ambos son idénticos, excepto que hacen referencia a un archivo .js diferente):

<%@ Control ClassName="MyScriptControl" %>
<script type="text/javascript" src="/_layouts/MyScript.js"></script>

feature.xml:

<?xml version="1.0" encoding="utf-8" ?> 
<Feature Id="AA9D59AC-D53E-4338-9B52-CD39F2A8C31A" 
    ActivateOnDefault="true" 
    Title="My Feature" 
    Description="Does something." 
    Scope="Site" Version="1.0.0.0" 
    Hidden="FALSE" 
    DefaultResourceFile="core" 
    xmlns="http://schemas.microsoft.com/sharepoint/">
    <ElementManifests>
        <ElementManifest Location="MyFeature\Elements.xml" /> 
    </ElementManifests>
</Feature>

Elements.xml:

<?xml version="1.0" encoding="utf-8" ?> 
<Elements xmlns="http://schemas.microsoft.com/sharepoint/" 
    Id="24A4BB9A-9636-4a73-B3A5-35661DE19902">
    <Control Id="AdditionalPageHead" 
        ControlSrc="~/_controltemplates/MyControl.ascx" /> 
</Elements>

La salida en la página (jQuery se despliega antes de DependsOnjQuery):

<script type="text/javascript" src="/_layouts/DependsOnjQuery.js"></script>
<script type="text/javascript" src="/_layouts/jQuery.min.js"></script>

Quiero MyControl1.js para rendir antes MyControl2.js.

¿Fue útil?

Solución

Yo era capaz de conseguir que esto funcione mediante la adición de un segundo DelegateControl a la cabecera de mi masterpage, y la adición de jQuery para que el delegado. De esta manera, puedo asegurar que siempre se carga jQuery antes de todo lo demás, sin tener que escribir algo de lógica a retrasar la carga de mis bibliotecas dependientes.

<SharePoint:DelegateControl runat="server" ControlId="jQueryDelegate" AllowMultipleControls="true"/>
<SharePoint:DelegateControl runat="server" ControlId="AdditionalPageHead" AllowMultipleControls="true"/>
scroll top