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.
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.
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)
{
}
}
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>");
}
}
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.
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.
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)
{
}
}
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>");
}
}