Partilhar via


Atribuindo Referências a Scripts Dinamicamente

Na maioria das situações, a maneira mais fácil para adicionar um arquivo de script a uma página ASP.NET é na marcação, como no exemplo a seguir:

<asp:ScriptManager ID="SMgr" >
  <Scripts>
    <asp:ScriptReference Path="./Script.js" />
  </Scripts>
</asp:ScriptManager> 

No entanto, também é possível adicionar referências a scripts dinamicamente.Desenvolvedores da página podem fazer isso para ter mais controle sobre como um script é adicionado.Por exemplo, eles podem adicionar scripts dinamicamente para ajudar a conservar recursos de memória por não carregar uma biblioteca grande de scripts, a menos que seja necessário.Ou eles podem carregar versões diferentes de scripts para diferentes tipos de usuários.Os desenvolvedores de controle adicionam scripts dinamicamente quando criam scripts de controle ou controles estendidos para fazer recursos de script automaticamente disponíveis para a página que hospeda o controle.

Este tópico aborda um cenário de desenvolvedor de página simples.Para adicionar referências a scripts em controles personalizados, consulte Criando um controle do extensor para associar um comportamento do cliente com um controle de servidor Web.

Referências a script podem especificar arquivos de script ou scripts incorporados como recursos em conjuntos de módulos (assemblies).Os scripts podem existir nas versões de depuração e varejo.O procedimento a seguir mostra como atribuir uma referência a script para uma página em cada um dessas situações.

Observação:

Todos os arquivos a ser registrado com de script do ScriptManager controle deve chamar o notifyScriptLoaded método para notificar o aplicativo que o script foi carregado. Scripts baseados em conjuntos de módulos (assemblies) não devem chamar esse método na maioria dos casos.Para obter mais informações, consulte Método Sys.Aplicativo.notifyScriptLoaded.

Para adicionar dinamicamente uma referência de script para uma página.

  1. Se você não souber a identificação do elemento <asp:ScriptManager> na página, chame o método ScriptManagerGetCurrent() do controle ScriptManager para obter a instância atual do controle.Teste para null caso não haja controle ScriptManager na página.Se você souber que há um elemento <asp:ScriptManager> na página e você souber o valor ID, você pode ignorar esta etapa.

    O exemplo a seguir mostra como testar a existência de um controle ScriptManager em uma página e, em seguida, obter a instância atual ou criar uma nova instância.

    ' 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.");
    
  2. Crie um objeto ScriptReference.

    Dim SRef As ScriptReference
    SRef = New ScriptReference()
    
    ScriptReference SRef = new ScriptReference();
    
  3. Para scripts com base em arquivo, se você souber que a propriedade ScriptPath do controle ScriptManager é definida para o local correto para o arquivo de script, defina a propriedade Name da instância ScriptReference com o nome do arquivo de script.Caso contrário, defina a propriedade Path do objeto ScriptReference à URL absoluta, relativa, ou relativa ao aplicativo do arquivo de script a adicionar.

    ' 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";
    
  4. Se o script for parte de um conjunto de módulos (assembly), defina as propriedades Name e Assembly da instância ScriptReference.

    SRef.Name = "Script.js"
    SRef.Assembly = "ScriptAssembly"
    
    SRef.Name = "Script.js";
    SRef.Assembly = "ScriptAssembly";
    
  5. Especifique se deseja executar depuração ou liberar as versões do script.Para definir esse modo para todos os scripts na página, defina a propriedade ScriptMode do controle ScriptManager.Para definir o modo de depuração para um script individual, defina a propriedade ScriptMode do objeto ScriptReference.

    O exemplo a seguir demonstra ambas as opções.

    ' 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.
    
    Observação:

    Se a Path propriedade das ScriptReference objeto não estiver definido, o ScriptMode propriedade das ScriptManager controle estiver definida como Release Por padrão. Se a propriedade Path do objeto ScriptReference estiver definida, o controle ScriptManager procura por ambos, scripts de liberação e depuração, a menos que sua propriedade ScriptMode esteja definida como um modo específico.

  6. Adicione o objeto ScriptReference à coleção Scripts do controle ScriptManager.

    SMgr.Scripts.Add(SRef)
    
    Smgr.Scripts.Add(SRef);
    

Consulte também

Conceitos

Criando um controle do extensor para associar um comportamento do cliente com um controle de servidor Web

Adicionando recursos de cliente a um controle de servidor Web

Referência

ScriptReference

ScriptManager

ScriptMode