Asignar referencias de script de forma dinámica
Actualización: noviembre 2007
En la mayoría de los escenarios, la manera más fácil de agregar un archivo de script a una página ASP.NET es con marcado, como en el ejemplo siguiente:
<asp:ScriptManager ID="SMgr" >
<Scripts>
<asp:ScriptReference Path="./Script.js" />
</Scripts>
</asp:ScriptManager>
Sin embargo, también es posible agregar dinámicamente referencias de script. Los desarrolladores de páginas pueden hacer esto para tener más control sobre cómo se agrega un script. Por ejemplo, podrían agregar scripts dinámicamente para ayudar a conservar los recursos de memoria, no cargando una biblioteca de scripts grande a menos que sea necesario. O bien, podrían cargar versiones de scripts diferentes para tipos de usuarios diferentes. Los desarrolladores de controles agregan scripts dinámicamente al crear controles de script o controles extensores para dejar disponibles los recursos del script automáticamente para la página que hospeda el control.
En este tema se explica un escenario simple de desarrollador de páginas. Para agregar referencias de script en controles personalizados, vea Crear un control extensor para asociar un comportamiento de cliente con un control de servidor web.
Las referencias de script pueden especificar archivos de script o scripts incrustados como recursos en ensamblados. Los scripts se pueden encontrar en las versiones de depuración y comerciales. El siguiente procedimiento muestra cómo asignar una referencia de script a una página en cada una de estas situaciones.
Nota: |
---|
Todos los archivos de script que se van a registrar con el control ScriptManager deben llamar al método notifyScriptLoaded para notificar a la aplicación que el script ha terminado de cargarse. Los scripts que se basan en ensamblados no deberían llamar a este método en la mayoría de los casos. Para obtener más información, vea Sys.Application.notifyScriptLoaded (Método). |
Para agregar dinámicamente una referencia de script a una página
Si no conoce el identificador del elemento <asp:ScriptManager> de la página, llame al método ScriptManagerGetCurrent() del control ScriptManager para obtener la instancia actual del control. Compruebe null en caso de que no haya ningún control ScriptManager en la página. Si sabe que hay un elemento <asp:ScriptManager> en la página y conoce su valor ID, puede omitir este paso.
El ejemplo siguiente muestra cómo comprobar la existencia de un control ScriptManager en una página y, a continuación, obtiene la instancia actual o crea una nueva.
' If there is a ScriptManager on the page, use it. ' If not, throw an exception. Dim SMgr As ScriptManager If ScriptManager.GetCurrent(Page) Is Nothing Then Throw New Exception("ScriptManager not found.") Else : SMgr = ScriptManager.GetCurrent(Page) End If
// If there is a ScriptManager on the page, use it. // If not, throw an exception. ScriptManager Smgr = ScriptManager.GetCurrent(Page); if (Smgr == null) throw new Exception("ScriptManager not found.");
Crear un objeto ScriptReference.
Dim SRef As ScriptReference SRef = New ScriptReference()
ScriptReference SRef = new ScriptReference();
Para los scripts basados en archivos, si sabe que la propiedad ScriptPath del control ScriptManager está establecida en la ubicación correcta para el archivo de script, establezca la propiedad Name de la instancia ScriptReference en el nombre del archivo de script. En caso contrario, establezca la propiedad Path del objeto ScriptReference en la dirección URL absoluta, relativa o relativa a la aplicación del archivo de script que desea agregar.
' If you know that Smgr.ScriptPath is correct... SRef.Name = "Script.js" ' Or, to specify an app-relative path... SRef.Path = "~/Scripts/Script.js"
// If you know that Smgr.ScriptPath is correct... SRef.Name = "Script.js"; // Or, to specify an app-relative path... SRef.Path = "~/Scripts/Script.js";
Si el script forma parte de un ensamblado, establezca las propiedades Name y Assembly de la instancia ScriptReference.
SRef.Name = "Script.js" SRef.Assembly = "ScriptAssembly"
SRef.Name = "Script.js"; SRef.Assembly = "ScriptAssembly";
Especifique si desea ejecutar versiones de depuración o de lanzamiento del script. Para establecer este modo para todos los scripts de la página, establezca la propiedad ScriptMode del control ScriptManager. Para establecer el modo depuración para un script individual, establezca la propiedad ScriptMode del objeto ScriptReference.
El ejemplo siguiente muestra ambas opciones.
' To set ScriptMode for all scripts on the page... SMgr.ScriptMode = ScriptMode.Release 'Or, set ScriptMode for just for the one script... SRef.ScriptMode = ScriptMode.Debug 'If they conflict, the setting on the ScriptReference wins.
// To set ScriptMode for all scripts on the page... Smgr.ScriptMode = ScriptMode.Release; //Or, to set the ScriptMode just for the one script... SRef.ScriptMode = ScriptMode.Debug; //If they conflict, the setting on the ScriptReference wins.
Nota: Si no está establecida la propiedad Path del objeto ScriptReference, la propiedad ScriptMode del control ScriptManager se establece en Release de forma predeterminada. Si está establecida la propiedad Path del objeto ScriptReference, el control ScriptManager buscará los scripts de depuración y de lanzamiento, a menos que su propiedad ScriptMode esté establecida en un modo concreto.
Agregue el objeto ScriptReference a la colección Scripts del control ScriptManager.
SMgr.Scripts.Add(SRef)
Smgr.Scripts.Add(SRef);
Vea también
Conceptos
Crear un control extensor para asociar un comportamiento de cliente con un control de servidor web
Agregar funcionalidad de cliente a un control de servidor web