Primeiramente, o que seria JavaScript Embedded, e por que usa-la?
È simples, você certamente ja deve ter notado um Tag <script> no seu HTML gerado com o endereço WebResource.axd?d=Ei2D0BWn0DEpey-.............., então o WebResource.axd vai "redirecionar" para um arquivo JavaScript que está dentro de uma dll (que certamente será a dll dos seus controles customizado).
Se você tem o costume de criar/customizar controles, então você já deve ter precisado adicionar código JavaScript, e criar uma string contendo o JavaScript e adiciona-lo quando estiver fazendo o Render ou então usando ScriptManager.RegisterClientScriptBlock, essa é uma solução muita estranho (para não dizar gambiarra). Outro motivo para usa-lo é que como o navegador vai interpreta-lo como um arquivo JS (e não um texto no meio do seu HTML) então, ele vai ficar em cache e sua página vai ficar mais otimizada.
Vou criar um controle demo, mais especificamente, um HyperLink que quando clicar exibirá uma alert.
1° Passo: criar e fazer a herança do controle
[ToolboxData("<{0}:MGHyperLink runat=server />")]
public class MGHyperLink : System.Web.UI.WebControls.HyperLink
{
}
2° Passo: criar meu aquivo JavaScript que vai conter a função para exibir o alert
function DemoAlert()
{
debugger; //Abilitar o debug
alert("Alo Mundo!");
return false;
}
É muito importante setar o Build Action para Embedded Resource
E como fazer isso?
- Clica no arquivo
- Precione F4 para exibir as propriedades
- E então altere o Build Action para Embedded Resource
Bem simples a função a unica coisa a destacar é o debugger que se seu IE estiver habilitado para debugar JavaScript e você estiver usando o VisualStudio 2008 ele será considerado um breakPoint.
3º Passo: Definir o arquivo JavaScript para com um Web Resource
Abra o arquivo AssemblyInfo que fica dentro da pasta Properties, ele é cridado automaticamente quando você cria um projeto como ClassLibrary. Então informe onde fica o arquivo que você criou
//Caminho completo do JavaScript incluindo o nome do projeto + as pastas + nome do arquivo
[assembly: WebResource("CustomControl.Controls.HyperLink.Resource.DemoAlert.js", "text/javascript")]
Isso não serve somente para arquivos JavaScripts não, você pode usar para arquivos CSS, imagens...
4º Passo: Renderizar a tag <script> com o endereço do seu arquivo:
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
//Antes de renderizar adicionar o JavaScript
ScriptManager.RegisterClientScriptResource(this, GetType(),
"CustomControl.Controls.HyperLink.Resource.DemoAlert.js");
}
O ScriptManager vai fazer todo o trabalho de criar a tag com o caminho adequando.
5 º Passo: Adicionar o evento onclick no hyperlink para executar a função JavaScript
protected override void Render(HtmlTextWriter writer)
{
//Adicionando o evento onClik com a funcao JS criada
writer.AddAttribute("onclick", "DemoAlert()");
base.Render(writer);
}
Então basta agora adicionar seu controle na página e depois visualize o código HTML gerado, verá que o seu arquivo JavaScript está dentro de um WebResource.axd assim:
<script src="/WebResource.axd?d=Ei2D0BWn0DEpey-kSzG_XQ2&t=633314183876875000" type="text/javascript"></script>
Se você está curioso de saber com ficou seu arquivo, então abra o WebResource.axd (o caminho completo) na barra de endereço e verá que seu arquivo não foi nada modificado.
Links:
Currently rated 5.0 by 1 people
- Currently 5/5 Stars.
- 1
- 2
- 3
- 4
- 5