WebMatrix - Código de inicialização (_AppStart.cshtml)


Continuando a série de artigos básicos sobre o WebMatrix vou falar sobre como o podemos executar um código de inicialização antes de carregar as páginas do site.

As páginas ASP.NET fornecem maneiras para que possamos executar um código antes da página ser carregada.

Existem vários cenários em que este comportamento pode ser vantajoso como o tratamento de erros e definição de variáveis globais do site, por exemplo.

Você pode executar um código específico na primeira vez que o site for acessado e antes da carga de qualquer página em uma pasta em uma determinada.

Código a nível de aplicação

Quando um site é acessado pela primeira vez, o WebMatrix verifica se a página _AppStart.cshtml foi executada. Se esta verificação retornar false a página _AppStart.cshtml será executada antes da página atual que foi solicitada.

O arquivo _AppStart.cshtml deve ser criado na raiz do site, que é um excelente lugar para definir variáveis globais, na verdade as páginas ASP.NET fornecem o dicionário AppState especificamente para esta tarefa.

Vamos a um exemplo...

Abra o WebMatrix e clique em - Site From Template - para criar um novo site a partir de um modelo;

Escolha o modelo Empty Site e informe o nome do site. No exemplo eu dei o nome : TesteInicializacao

Vamos incluir na raiz do site um novo arquivo _AppStart.chstml. Para isso selecione a guia Files e a seguir no menu clique em New -> New File;

Na janela Choose a File Type , clique no tipo CSHTML e informe o nome _AppStart.cshtml e a seguir no botão OK;

Altere o conteúdo do arquivo conforme o código abaixo:

O código atribui um valor ao dicionário AppState que será executado antes das cargas das páginas do site. O dicionário poderá ser acessado de qualquer lugar do nosso site.

Vamos testar isso incluindo um novo arquivo chamado Default.cshtml na raiz do nosso site;

Clique no item do menu New->New File;

A seguir escolha o template CSHTML e informe o nome Default.cshtml e clique em OK;

Em seguida inclua o código abaixo no arquivo Default.cshtml:

Observe que :

Este código interroga o dicionário AppState, a fim de mostrar o nome da aplicação dentro das marcas <title> e <h1>.

Um uso comum para o arquivo _AppStart.cshtml é inicializar valores para os Helpers que você usa em seu site (muito dos helpers de terceiros requerem uma inicialização com chaves de API, usernames, etc.)

Abaixo temos o resultado:

Código a nível de pasta

As páginas ASP.NET verificam a presença de um arquivo _PageStart.cshtml na pasta que contém o arquivo solicitado, ou qualquer uma das pastas acima dele, e se este for encontrado, executa a todos, começando com a pasta raiz, antes da página solicitada ser executada.

Se o arquivo _AppStart.cshtml não foi executado quando uma página é solicitada, ele será executado primeiro, o que é seguido pela execução dos arquivos _PageStart.cshtml relevantes, se eles existirem.

Finalmente, a página solicitada é executada.

Se existir uma hierarquia de pastas, cada uma pode conter um arquivo _PageStart.cshtml. O WebMatrix então vai iniciar pela pasta raiz executando todos os arquivos _PageStart.cshtml encontrados enquanto ele navega pela hierarquia de pastas para a página solicitada.

Dentro do arquivo _PageStart.cshtml, você faz uma chamada para o método RunPage(), que informa ao servidor onde no arquivo _PageStart.cshtml você deseja que a página solicitada seja executada.

Na figura abaixo vemos a ilustração desse processo:

Observe que a página _PageStart.cshtml pode incluir código que é executado antes e depois de cada página em uma pasta. O esquema mostra também que se o arquivo _AppStart.cshtml precisar ser executado, isto vai acontecer sempre em primeiro lugar.

O uso mais comum para o arquivo _PageStart.cshtml é definir o layout de página para cada arquivo em uma pasta específica. A declaração da localização da página de layout no arquivo _PageStart.cshtml, será herdada por todas as outras páginas na pasta atual e nas sub-pastas.

Outros usos comuns incluem o tratamento de erros e a restrição de acesso a nível de pasta que veremos em outro artigo.

Pegue o projeto completo aqui: TesteInicializacao.zip

Salmos 6:6 Estou cansado do meu gemido; toda noite faço nadar em lágrimas a minha cama, inundo com elas o meu leito.
Salmos 6:7
Os meus olhos estão consumidos pela mágoa, e enfraquecem por causa de todos os meus inimigos.
Salmos 6:8
Apartai-vos de mim todos os que praticais a iniquidade; porque o Senhor já ouviu a voz do meu pranto.
Salmos 6:9
O Senhor já ouviu a minha súplica, o Senhor aceita a minha oração.

Salmos 6:10
Serão envergonhados e grandemente perturbados todos os meus inimigos; tornarão atrás e subitamente serão envergonhados.

Referências:


José Carlos Macoratti