Revista MSDN Magazine Edição 24 - Personalização de Interface de Usuário no ASP.NET

Artigo Originalmente Publicado na MSDN Magazine Edição 24

Clique aqui para ler todos os artigos desta edição

 

Personalização de Interface de Usuário no ASP.NET

 

Sempre que vamos desenvolver algum novo sistema precisamos de algumas funcionalidades que são iguais àquelas que já desenvolvemos um dia ou então com algumas pequenas modificações. As vezes, por serem sistemas sob encomenda, sempre acabamos reinventando a roda ou senão aplicamos o velho processo de herança “.........” e alteramos algumas coisas para personalizar o produto final. Mas, porque não usarmos os esforços para desenvolver as funcionalidades específicas de cada solução e parametrizamos, reutilizamos e/ou estendemos o que é repetitivo? Com isso em mente estaremos avaliando uma alternativa simples de implementar este tipo de funcionalidade.

 

Projeto

Para implementar as funcionalidades descritas aqui, crie um projeto ASP.NET WebApplication chamado SkinsMSDN, usando como linguagem o Visual C#. Nas propriedades do projeto altere as configurações do Assembly Name e Default Namespace, conforme a Figura 1. Esta alteração se faz necessária devido às configurações posteriores que iremos fazer.

 

Figura 1. Painel de propriedades do projeto.

 

Por uma questão de organização, iremos criar algumas pastas dentro do projeto (conforme a Figura 2). Note que é importante mantermos a mesma nomenclatura aqui apresentada.

 

Figura 2. Estrutura de Pastas necessárias para a aplicação.

 

Configuração de Módulos

Como o objetivo é criar um módulo independente e facilmente acoplável a qualquer solução, é preciso configurar as informações necessárias para que seja possível a utilização desta facilidade oferecida pelo Framework. Neste ponto estaremos fazendo uso do httpModules que são chamados antes e depois que um handler é executado, e nos habilita interceptar, participar ou modificar cada requisição. Esta funcionalidade implementa a interface IHttpModule, que está no namespace System.Web. Para ativarmos esta funcionalidade precisaremos de duas coisas:

1 - Configurar o Web.Config direcionando a execução do handler, conforme código:

 

Listagem 1. Classe Web.Config

...

  

  

...

 

2 - Criar uma classe (Listagem 2) que atenda ao requisito de implementação da interface, e que esteja configurada no Web.Config. Esta classe deve ser criada na pasta ModuleHandler, com o nome ModuleHandler:

 

Listagem 2. Classe ModuleHandler.cs

using System;

using System.Web;

using System.Collections;

 

namespace MSDNMag.ModuleHandler

{

///

/// Gerenciador do módulo

///

public class ModuleHandler : IHttpModule

{

public ModuleHandler(){}

 

public void Init(HttpApplication context)

{

/* Configura o controle de início de requisição */

context.BeginRequest +=new

EventHandler(moduleHandler_BeginRequest);

}

 

public void Dispose(){}

 

private void moduleHandler_BeginRequest(object sender, EventArgs e)

{

/* Associa na requisição corrente os objetos que deverão ser

 * carregados pela página principal */

ArrayList pageComponents = new ArrayList();

pageComponents.Add("MSDNMag.ClassControls.EditPeople");

HttpContext.Current.Items["PageComponents"] = pageComponents;" [...] continue lendo...

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados