WebForms - Filtros

Nesta aula você irá aprender como criar filtros e unificar funções comuns entre paginas, darei um exemplo de como você pode fazer um filtro de validação de permissão de acessos.

assinaturaAssine nossa Comunidade

Web Forms -Filtros

Vamos mostrar como criar filtros e agregar métodos. Falaremos sobre PRE INIT, INIT, LOAD, LOAD COMPLETE e Herança na orientação a objetos.

Herança

Quando começamos a fazer uma aplicação em web forms , o sistema herda, por padrão, da classe Page. A classe Page é responsável por ter o cookie, response, request, ou seja, por interagir com http no geral.

Para exemplificar, criaremos a classe Filtro, que herda de Page, adicionando a referência System.Web.UI e na página Default.aspx.cs, vamos fazer a herança da classe Filtro.

Quando a página Default.aspx for inicializada, passará primeiro pelo construtor da classe Filtro.

      
        
        using System.Web.UI

        public class Filtro : Page
        {
          public Filtro()
          {
            var nome = this.ToString();
            //Response.Write(nome);
          }
        }  
       
    
      
        public partial class _Default : Filtro
        {
          protected void Page_Load(object sender, EventArgs e)
          {

          }
        }  
       
    

PreInit , Init , Load e LoadComplete

PreInit

Se quisermos utilizar, por exemplo, o Response.Write para escrever o nome da página diretamente no Html, na classe Filtro, vai ocorrer o seguinte erro: A resposta não está disponível neste contexto, pois no momento que estamos tentando utilizar o filtro que foi criado por um construtor de uma classe, ainda não foram carregados todos os dados necessários para o elemento Page funcionar.

      
        
        using System.Web.UI

        public class Filtro : Page
        {
          public Filtro()
          {
            var nome = this.ToString();
            Response.Write(nome); //Aqui ocorre erro
          }
        }  
       
    

Neste caso o filtro que está sendo criado está somente no ambiente de classes, ou seja, ainda não chegou na parte onde estão carregando elementos da página html.Por isso o Response não está ativo e não será possivel escrever na tela. Dessa forma teremos que utilizar as agregações de métodos.

Como estamos começando a inicialização, vamos utilizar o PreInit. Ao pressionar a tecla < TAB> após digitar 'this.Page.PreInit +=' , automaticamente será criado o método Page_PreInit e então o Response.Write irá funcionar.

      

        using System.Web.UI
        public class Filtro : Page
        {
          public Filtro()
          {
            this.Page.PreInit += Page_PreInit;
          }

          protected void Page_PreInit(object sender, EventArgs e)
          {
            var nome = this.ToString();
            Response.Write(nome); 
          }  
        }
       
    

O PreInit é o primeiro método a ser carregado. O segundo método é o Init , o terceiro é o Load e, por último , o LoadComplete.

No exemplo abaixo, criaremos uma página chamada Default2.aspx, que vai herdar de FilterPage.

Na classe FilterPage vamos utilizar os quatro métodos(PreInit, Init, Load e LoadComplete).A sequência de execução seguirá a ordem que foi mencionada acima.

      

        using System.Web.UI
        public class FiltroPage : Page
        {
          public FilterPage()
          {
            this.Page.LoadComplete += Page_LoadComplete;
            this.Page.Load += Page_Load;
            this.Page.Init += Page_Init;
            this.Page.PreInit += Page_PreInit;
          }

          protected void Page_Load(object sender, EventArgs e)
          {
            Response.Write(Request["param"]); 
            Response.Write("oi pre Load < br> < hr> < br>"); 
          }  

          protected void Page_LoadComplete(object sender, EventArgs e)
          {
            Response.Write(Request["param"]); 
            Response.Write("oi pre LoadComplete < br> < hr> < br>"); 
          }  

          protected void Page_Init(object sender, EventArgs e)
          {
            Response.Write(Request["param"]); 
            Response.Write("oi pre init < br> < hr> < br>"); 
          }  

          protected void Page_PreInit(object sender, EventArgs e)
          {
            Response.Write(Request["param"]); 
            Response.Write("oi pre preInit < br> < hr> < br>"); 
          }  
        }
       
    

WebForms - Filtros

Nesta aula você irá aprender como criar filtros e unificar funções comuns entre paginas, darei um exemplo de como você pode fazer um filtro de validação de permissão de acessos.

Próximas Aulas:
assinaturaAssine nossa Comunidade

Web Forms -Filtros

Vamos mostrar como criar filtros e agregar métodos. Falaremos sobre PRE INIT, INIT, LOAD, LOAD COMPLETE e Herança na orientação a objetos.

Herança

Quando começamos a fazer uma aplicação em web forms , o sistema herda, por padrão, da classe Page. A classe Page é responsável por ter o cookie, response, request, ou seja, por interagir com http no geral.

Para exemplificar, criaremos a classe Filtro, que herda de Page, adicionando a referência System.Web.UI e na página Default.aspx.cs, vamos fazer a herança da classe Filtro.

Quando a página Default.aspx for inicializada, passará primeiro pelo construtor da classe Filtro.

      
        
        using System.Web.UI

        public class Filtro : Page
        {
          public Filtro()
          {
            var nome = this.ToString();
            //Response.Write(nome);
          }
        }  
       
    
      
        public partial class _Default : Filtro
        {
          protected void Page_Load(object sender, EventArgs e)
          {

          }
        }  
       
    

PreInit , Init , Load e LoadComplete

PreInit

Se quisermos utilizar, por exemplo, o Response.Write para escrever o nome da página diretamente no Html, na classe Filtro, vai ocorrer o seguinte erro: A resposta não está disponível neste contexto, pois no momento que estamos tentando utilizar o filtro que foi criado por um construtor de uma classe, ainda não foram carregados todos os dados necessários para o elemento Page funcionar.

      
        
        using System.Web.UI

        public class Filtro : Page
        {
          public Filtro()
          {
            var nome = this.ToString();
            Response.Write(nome); //Aqui ocorre erro
          }
        }  
       
    

Neste caso o filtro que está sendo criado está somente no ambiente de classes, ou seja, ainda não chegou na parte onde estão carregando elementos da página html.Por isso o Response não está ativo e não será possivel escrever na tela. Dessa forma teremos que utilizar as agregações de métodos.

Como estamos começando a inicialização, vamos utilizar o PreInit. Ao pressionar a tecla < TAB> após digitar 'this.Page.PreInit +=' , automaticamente será criado o método Page_PreInit e então o Response.Write irá funcionar.

      

        using System.Web.UI
        public class Filtro : Page
        {
          public Filtro()
          {
            this.Page.PreInit += Page_PreInit;
          }

          protected void Page_PreInit(object sender, EventArgs e)
          {
            var nome = this.ToString();
            Response.Write(nome); 
          }  
        }
       
    

O PreInit é o primeiro método a ser carregado. O segundo método é o Init , o terceiro é o Load e, por último , o LoadComplete.

No exemplo abaixo, criaremos uma página chamada Default2.aspx, que vai herdar de FilterPage.

Na classe FilterPage vamos utilizar os quatro métodos(PreInit, Init, Load e LoadComplete).A sequência de execução seguirá a ordem que foi mencionada acima.

      

        using System.Web.UI
        public class FiltroPage : Page
        {
          public FilterPage()
          {
            this.Page.LoadComplete += Page_LoadComplete;
            this.Page.Load += Page_Load;
            this.Page.Init += Page_Init;
            this.Page.PreInit += Page_PreInit;
          }

          protected void Page_Load(object sender, EventArgs e)
          {
            Response.Write(Request["param"]); 
            Response.Write("oi pre Load < br> < hr> < br>"); 
          }  

          protected void Page_LoadComplete(object sender, EventArgs e)
          {
            Response.Write(Request["param"]); 
            Response.Write("oi pre LoadComplete < br> < hr> < br>"); 
          }  

          protected void Page_Init(object sender, EventArgs e)
          {
            Response.Write(Request["param"]); 
            Response.Write("oi pre init < br> < hr> < br>"); 
          }  

          protected void Page_PreInit(object sender, EventArgs e)
          {
            Response.Write(Request["param"]); 
            Response.Write("oi pre preInit < br> < hr> < br>"); 
          }  
        }