Themes em ASP.Net (Parte 2)

by Felipe Oriani 26. August 2009 18:37

 

Olá, neste segundo artigo sobre Themes, irei demonstrar como configurar em tempo de execução o theme utilizado por um webform e como configurar um theme para a aplicação completa, sem a necessidade de ficar dizendo toda vez que criamos um webform que iremos utilizar tal theme em questão. Além disso, vou demonstrar de forma fácil como podemos utilizar CSS junto aos themes, para aumentar nossa produtividade. Para exemplificação, irei continuar com os fontes do primeiro artigo, se você ainda não leu, leia aqui.

Integrando os Themes com CSS

Sabemos que o CSS é uma tecnologia utilizada para formatação de estilos e cores em uma página na web mantendo uma organização melhor em um código fonte. Atualmente esta tecnologia está ficando cada vez mais difundida junto as Web Standards (HTML, xHTML, XML e Javascript), padrões da web 2.0 e aplicando-se muito com um conceito chamado tableless.

Em ASP.Net, podemos utilizar o CSS de forma pura ou então aplicar este junto com os themes. A vantagem de aplicarmos junto com os themes é que além do recurso (themes) ter sido criado para este fim (formatação de forma geral) ele se encarrega de fazer algumas tarefas e organizar nosso código para que funcione de forma adequada, que quando fazemos com o CSS puro, devemos aplicar.

Continuando nosso projeto, abra-o no Visual Studio e na pasta Azul (lembre-se que esta pasta é um theme que foi criado dentro da pasta App_Themes), clique com o botão direito e selecione “Add New Item”. Em seguida, escolha o tipo “Style Sheet”, forneça um nome e clique em OK. Feito isso, adicione algumas classes de formações CSS em nosso arquivo; a listagem 1, exemplifica uma formatação definida em CSS.

 

.textBox

{

      font-size:12px;

      font-family:Arial Verdana Sans-Serif;

      color:#0000AA;

      background-color:#efefef;

      border:solid 1px #3333FF;

}

 

.dropDownList

{

      font-size:12px;

      font-family:Arial Verdana Sans-Serif;

      color:#0000AA;

      background-color:#efefef;

      padding:5px;

      border:solid 1px #3333FF;

}

 

.button

{

      font-size:12px;

      font-family:Arial Verdana Sans-Serif;

      color:#ffffff;

      background-color:#000055;

      padding:5px;

      border:solid 2px @dfdfdf;

}

Listagem 1: Formatação CSS de exemplo

 

 Em seguida, abra o arquivo .Skin criado no primeiro artigo, e defina a propriedade CssClass de cada controle para o nome de uma classe CSS criada em nosso arquivo exemplificado anteriormente. A listagem 2 exibe como nosso arquivo .Skin pode ficar:

 

<asp:TextBox runat="server"

             CssClass="textBox" />

            

<asp:DropDownList runat="server"

             CssClass="dropDownList" />

            

<asp:Label runat="server"

           ForeColor="Blue"

           Font-Size="11px"

           Font-Names="Tahoma"

           Font-Bold="true" />

          

<asp:Button runat="server"

           CssClass="button" />

Listagem 2: Formatação de Skin utilizando CSS

 

Se você notar o código da listagem 2, verá que mantivemos a formatação comum para a tag Label, ou seja, os themes permitem que utilizemos recursos do CSS junto com as formatações clássicas do ASP.Net.

Execute a aplicação e como no tutorial anterior fizemos a configuração do theme para a página Default.aspx, esta por sua vez já irá assumir este theme e trabalhat sobre ele.

Ao executar a página, note que as formatações aplicadas no CSS já são incluídas em cada controle, ou seja, o ASP.Net já se encarrega e incluir para nós todos os arquivos com extenção .css disponíveis na pasta do theme configurado, no caso, o theme Azul.  Sendo assim, podemos ter qualquer webform em qualquer local da aplicação (dentro de subpastas) que o ASP.Net se encarrega se incluir os arquivos .CSS de acordo com o caminho do webform.

Configurando um theme em tempo  de execução.

Podemos configurar nosso theme em tempo de execução, ou seja, durante a rendereização de um webform, podemos informar qual o theme a se utilizado. A vantagem de fazermos importa que em alguns casos possamos querer carregar o theme de acordo com determinadas condições, um exemplo disso seria o perfil de um usuário autenticado na aplicação que de acordo com este carrega-se outro theme, entre outras condições que podem vir a sua necessidade.

Antes em nosso exemplo remova o valor da propriedade theme na diretiva Page de nosso webform, pois quando informamos em modo design no artigo anterior, ele aplica o valor na diretiva Page, como propriedade do webform (que herda da classe Page).

Agora em nosso webform, no code-behine adicione o evento OnPreInit e adicione o código da listagem 3.

 

protected override void OnPreInit(EventArgs e)

{

    base.OnPreInit(e);

    this.Theme = "Azul";

}

Listagem 3: Definição de theme em tempo de execução

 

Com isso você consegue facilmente criar condições e setar a propriedade Theme (string) que o ASP.Net irá se encarregar de renderizar com as informações contidas neste theme especificado.

Configurando um theme para toda a aplicação.

Outra saída de configuração, porém muito utilizada quando desejamos ter apenas um theme, é a configuração direta no arquivo de configuração (web.config). Na tag <Page>, podemos informar o qual theme será utilizado através de um atributo chamado “theme”, e sendo assim, toda webform da aplicação que estiver no nível do arquivo de configuração irá assumir este theme. O código da listagem 4, exemplifica como seria esta modificação no web.config.

 

<pages theme="Azul">

      <controls>

            <add />

            <add />

      </controls>

</pages>

 Listagem 4: Definição de theme no arquivo de configuração


Bem pessoal, vimos como de forma fácil podemos aplicar estilos de formatações com CSS em nossas aplicações e também como configurar um theme para ser utilizado em nossa aplicação de forma dinâmica e também como uma forma fixa (em situações onde temos apenas uma formatação). Espero que tenham gostado e caso queria comentar, sugerir, criticar e/ou elogiar, sintam-se a vontade.

Um abraço a todos e até a próxima.

 

Exemplos: ThemesExemplo - Part 2.zip (4,33 kb)

Referências:

http://msdn.microsoft.com/en-us/library/ykzx33wh.aspx
http://www.odetocode.com/articles/423.aspx


Tags: ,

ASP.Net

Themes em ASP.Net (Parte 1)

by Felipe Oriani 19. August 2009 16:58

Olá Pessoal, neste artigo vou demonstrar um grande recurso do ASP.Net chamado Themes.  Este recurso no ASP.Net visa centralizar todo o estilo de nossa aplicação, buscando formatar controles,  trabalhar com imagens, utilização de CSS, layouts de estrutura (quando utilizamos tableless), dentre outros recursos voltados a formatação em geral.

Podemos dizer que para utilizar este recurso, precisamos entender três etapas básicas para tirarmos bons proveitos e são elas:

  1. Definir a pasta especial para themes de nossa aplicação;
  2. Criar um theme para a aplicação;
  3. Configurar o uso deste theme em questão;

 

Vamos tentar passar por estas três etapas e entender melhor como funciona este recurso.

Definir a pasta especial para themes de nossa aplicação

Como sabemos, em ASP.Net temos algumas pastas que são especiais, ou seja, são determinadas a fazer executar uma tarefa específica, como por exemplo, a pasta App_Code que têm por objetivo manter fontes de classes utilizadas na aplicação, e para os Themes não é diferente.  Temos uma pasta chamada App_Themes, que mantém todos os temas de nossa aplicação, ou seja, a aplicação em questão pode conter mais de um theme, o que lhe permite facilmente trocar o theme da aplicação à qualquer momento.

A utilidade de se manter mais de um theme na aplicação visa facilitar a troca do estilo de nossa aplicação, por exemplo, em um cenário onde o usuário autenticado pode escolher dentre três themes diferentes o seu preferido, fica fácil podermos alterar qual será utilizado por este usuário e manter tal estilo durante toda a sua sessão.

Nota: Os themes foram inseridos no ASP.Net a partir de sua versão 2.0, então você pode aplicar os conceitos apresentados aqui para qualquer versão igual ou superior a versão 2.0, utilizando Visual Studio 2005 ou 2008.

Criar um theme para nossa aplicação

Bem, vamos à prática. Abra o Visual Studio e crie um novo Website.  Com o criado, na solution Explorer clique com o direito na raiz do website e no menu de contexto, selecione o item Add ASP.Net Folder (você verá aqui todas as pastas especiais do ASP.Net) e clique em Themes. Feito isso o Visual Studio já nos cria a pasta App_Themes (utilizada para armazenar os themes) na raiz do website e já adiciona uma sub-pasta para um novo theme de nossa aplicação nos dando a possibilidade de renomea-la. A figura 1 ilustra como deve ficar nosso Solution Explorer até o momento.

 

Informe o nome que você deseja para seu primeiro theme (em nosso exemplo, estarei informando o nome “Azul”, para criar um theme com cores em tons de azul) e em seguida clique com o direito nesta pasta e no menu de contexto clique em Add New Item. Na janela que irá surgir, selecione o item Skin File e clique em OK.  A figura 1 ilustra nosso Solution Explorer como deve estar até o momento:

 

Figura 1: Solution Explorer da utilização de themes

 

Nota: Arquivos do tipo “Skin” são muito úteis, pois são eles que definem o estilo de cada controle em nossa aplicação, como por exemplo, TextBoxes, DropDownLists, GridViews, Validators, entre outros controles.

Seguindo nosso tutorial, no arquivo Skin adicionado, devemos adicionar a formatação de cada controle sem identificar o Id. A listagem 1 exibe um código de exemplo para um Theme.

 

<asp:TextBox runat="server"

             ForeColor="DarkBlue"

             Font-Size="11px"

             Font-Names="Tahoma"

             BorderColor="#3333FF"

             BorderStyle="Solid"

             BorderWidth="1px" />

            

<asp:DropDownList runat="server"

             ForeColor="Blue"

             Font-Size="11px"

             Font-Names="Tahoma"

             BackColor="LightBlue"

             BorderColor="#3333FF"

             BorderStyle="Solid"

             BorderWidth="1px" />

            

<asp:Label runat="server"

           ForeColor="Blue"

           Font-Size="11px"

           Font-Names="Tahoma"

           Font-Bold="true" />

          

<asp:Button runat="server"

           ForeColor="White"

           Font-Size="11px"

           Font-Names="Tahoma"

           Font-Bold="true"

           BackColor="DarkBlue"

           BorderColor="LightBlue"

           BorderStyle="Solid"

           BorderWidth="2px" />

 

Listagem 1: Definindo formatações para um theme

 

Como vocês podem ver, definimos formatações para controles do tipo TextBox, DropDownList, Label e Button, ou seja, toda vez que algum de nossos web forms estiver utilizando este theme, automaticamente os controles destes tipos estarão aplicando os estilos definidos.

Configurando um Theme

Agora em nossa página Default.aspx, em modo Design na janela de propriedade encontre a propriedade Theme, repare que o Visual Studio já entende que temos o tal Theme para selecionar então informe o theme Azul conforme a figura 2.

 

Figura 2: Configurando um theme em um webform

 

Uma vez com o theme configurado para este webform, arrastre alguns controles para o webform para fazermos alguns testes com nossa aplicação. A listagem 2 exibe um código para nosso webform de exemplo:

 

<table>

    <tr>

        <td><asp:Label ID="lblNome" runat="server" Text="Nome:"></asp:Label></td>

        <td><asp:TextBox ID="txtNome" runat="server" cols="30"></asp:TextBox></td>

    </tr>

    <tr>

        <td><asp:Label ID="lblCidade" runat="server" Text="Cidade:" Width="200px"></asp:Label></td>

        <td>

            <asp:DropDownList ID="dropCidade" runat="server">

                <asp:ListItem Text="Piracicaba"></asp:ListItem>

                <asp:ListItem Text="Campinas"></asp:ListItem>

                <asp:ListItem Text="São Paulo"></asp:ListItem>

                <asp:ListItem Text="Rio de Janeiro"></asp:ListItem>

            </asp:DropDownList>

        </td>

    </tr>

    <tr>

        <td><asp:Label ID="lblAssunto" runat="server" Text="Assunto:"></asp:Label></td>

        <td><asp:TextBox ID="txtAssunto" runat="server" Columns="30"></asp:TextBox></td>

    </tr>           

    <tr>

        <td><asp:Label ID="lblEmail" runat="server" Text="Email:"></asp:Label></td>

        <td><asp:TextBox ID="txtEmail" runat="server" Columns="40"></asp:TextBox></td>

    </tr>

    <tr>

        <td><asp:Label ID="lblMensagem" runat="server" Text="Nome:"></asp:Label></td>

        <td><asp:TextBox ID="txtMensagem" runat="server" Rows="5" Columns="40"
                         TextMode="MultiLine"></asp:TextBox></td>

    </tr>

    <tr>

        <td colspan="2"><asp:Button ID="btnEnviar" runat="server" Text="Enviar" /></td>

    </tr>

</table>

 

Listagem 2: Webform de exemplo utilizando controles clássicos do ASP.Net

 

Em seguida execute a aplicação e veja que eles já assumem o perfil aplicado em nosso arquivo Skin. A figura 3 exibe a aplicação rodando com os themes aplicados.

 

 

Figura 3: Aplicação operando com um theme configurado.

 

Pessoal, vimos como de forma fácil podemos aplicar estilos de formatações em nossas aplicações. Em um próximo artigo vou demonstrar como fazer a configuração do theme para a aplicação como um todo e também em tempo de execução (runtime) para a possibilidade de um usuário poder escolher seu theme preferido.

Espero que tenham entendido como funciona este grande recurso do ASP.Net.
Um abraço
Att,

 

Referência: http://msdn.microsoft.com/en-us/library/ykzx33wh.aspx

Exemplo: ThemesExemplo.zip (4,05 kb)

 

 

Tags: , ,

ASP.Net

Cookies em ASP.Net

by Felipe Oriani 15. August 2009 07:51

Olá Pessoal, hoje vou demonstrar de forma rápida e fácil de trabalhar com um dos recursos que as tecnologias em ambiente web permitem, é a utilização de Cookies.

Um cookie pode considerar-se que é um arquivo de texto que é enviado à máquina do cliente contendo informações para que a aplicação ou web site possa persistir diretamente no cliente, ou seja, é uma informação para aquele cliente em questão. Além destas informações, um cookie mantém informações a respeito de sua validade, conceitos de chaves/valor para cookies e a qual domínio ele foi gerado/pertence. Alguns exemplos de sua utilização são como armazenar informações a respeito do login do usuário em uma área restritira, manter um controle dos produtos mais acessados em uma loja virtual, entre outras formas.

Em ASP.Net para se utilizar um cookie, devemos utilizar um objeto da classe HttpCookie e enviar este objeto ao cliente através do objeto intrínseco Response. Para fazer a recuperação deste cookie, podemos utilizar o objeto intrínseco Request. Vamos a um simples exemplo:

// criando um objeto cookie para enviar ao cliente

// seu construtor permite que passemos um nome e um valor, ambos do tipo string

HttpCookie cookie = new HttpCookie("teste","abc");

//definindo uma validade de 3 horas para este cookie

cookie.Expires = DateTime.Now.AddHours(3);

       

//enviando ao cliente

Response.AppendCookie(cookie);

 

E para fazermos a recuperação deste cookie:

//recuperando um cookie através da chave

HttpCookie cookie = Request.Cookies["teste"];


//caso ele não tenha expirado e não seja nulo

if (cookie != null)

{
    //recuperando o valor do cookie

    string valor = cookie.Value;

    Response.Write(valor);

}

 

Podemos também utilizar coleções do tipo chave/valor através da propriedade Values, que representa uma coleção da classe System.Collections.Specialized.NameValueCollection para enviar informações ao cliente, por exemplo:

// criando um objeto cookie para enviar ao cliente

// eu construtor permite que passemos apenas um nome

HttpCookie cookie = new HttpCookie("teste");

//definindo valores

cookie.Values["valor1"] = "Felipe";

cookie.Values["valor2"] = "Oriani";

cookie.Values["valor3"] = "Piracicaba";

cookie.Values["valor4"] = "São Paulo";

 

 

//definindo uma validade de 3 horas para este cookie

cookie.Expires = DateTime.Now.AddHours(3);

 

//enviando ao cliente

Response.AppendCookie(cookie);

 


//recuperando um cookie pelo nome

HttpCookie cook = Request.Cookies["teste"];


//caso ele não tenha expirado e não seja nulo

if (cook != null)

{

    //obtendo os valores de cada chave

    string valor1 = cook.Values["valor1"];

    string valor2 = cook.Values["valor2"];

    string valor3 = cook.Values["valor3"];

    string valor4 = cook.Values["valor4"];

    Response.Write(valor1 + ", " + valor2 + ", " + valor3 + ", " + valor4);

} 

 

Devemos ter alguns cuidados na utilização de cookies, pois como estes são dados que serão enviados e salvos no cliente, estes arquivos tornam-se vulneráveis a softwares maliciosos e podem ler as informações e fazer algo que não desejamos como modificar a informação e enviar a terceiros. Dados que não devemos gravar em cookies são senhas, número de cartão de créditos, informações sigilosas, entre outros tipos de dados. Além disso, outro cuidado que se torna necessário em algumas ocasiões é verificar se o browser do cliente está com o suporte a cookies, pois muitas vezes este suporte pode estar desativado e sendo assim perdemos este recurso de persistência de informação.  Para verificar se o browser contém suporte, podemos utilizar a propriedade Browser do objeto intrínseco Request que persiste um objeto da classe HttpBrowserCapabilities (no qual contém informações do browser do cliente). Veja como fazer esta verificação:

if (Request.Browser.Cookies)

{

    //suporte cookies

}

else

{

    //não suporte cookies

}

O mesmo pode ser feito para outras propriedades deste objeto, como por exemplo:

if (Request.Browser.JavaScript)

{

    //suporte Javascript

}

 

if (Request.Browser.IsMobileDevice)

{

    //está sendo acessado de um dispositivo móvel

}

 

if (Request.Browser.JavaApplets)

{

    //suporte a Java

}

 

Bem pessoal, é isso. Com cautela você pode utilizar Cookies em aplicações web e tirar bom proveito deste recurso de persistência de informação.

Espero que tenham gostado
Um abraço e até a próxima

Referências:
http://msdn.microsoft.com/pt-br/library/system.web.httpcookie.aspx
http://msdn.microsoft.com/en-us/library/system.web.httpcookie_members.aspx

 

Tags:

ASP.Net

Trabalhando com Web User Controls

by Felipe Oriani 5. August 2009 15:25

Olá Pessoal, como estão ? Hoje vou falar um pouco sobre Web User Controls e como utiliza-los em uma aplicação ASP.Net.

Um web user control é um recurso do ASP.Net que nos permite de forma fácil centralizar um bloco de código ou funcionalidade em nossas aplicações web, buscando deixar a aplicação com uma manutenção fácil, flexível de forma a evitar a replicação de código. Para ilustrar um exemplo, vamos tomar como base um pequeno formulário onde irá conter alguns campos, propriedades  e eventos definidos em nosso controle.

Crie um website no Visual Studio (2005 ou 2008) e no solution explorer adicione um novo item do tipo Web User Control e chame-o de "FormBase.ascx", conforme a imagem 1.

 

Imagem 1: Adicionando webusercontrol na aplicação

 

Em seguida, digite o código da listagem 1 no arquivo .ascx de nosso web user control para fazer um formulário simples de cadastro:

 

<table width="400">

    <tr>

        <td>Nome: </td>

        <td><asp:TextBox ID="txtNome" runat="server"

            MaxLength="60" Columns="30"></asp:TextBox></td>

    </tr>

    <tr>

        <td>CPF: </td>

        <td><asp:TextBox ID="txtCPF" runat="server"

             MaxLength="14" Columns="14"></asp:TextBox></td>

    </tr>

    <tr>

        <td>Email: </td>

        <td><asp:TextBox ID="txtEmail" runat="server"

             MaxLength="60" Columns="30"></asp:TextBox></td>

    </tr>

    <tr>

        <td>Senha: </td>

        <td><asp:TextBox ID="txtSenha" runat="server"

            MaxLength="20" Columns="20" TextMode="Password"></asp:TextBox></td>

    </tr>

    <tr id="trNews" runat="server">

        <td colspan="2"><asp:CheckBox ID="chkNews" runat="server"

                        Text="Desejo receber newsletters!" Checked="true" /></td>

    </tr>

    <tr id="trSalvar" runat="server">

        <td colspan="2" align="right"><asp:Button ID="btnEnviar" runat="server"

                                      Text="Salvar" onclick="btnEnviar_Click" /></td>

    </tr>

</table>

Listagem 1: Código fonte do arquivo .ascx de nosso web user control de exemplo

 

Repare que colocamos alguns campos no formulário de exemplo e nas duas últimas linhas desta tabela definimos um Id, pois vamos precisar destes para definirmos algumas propriedades que serão utilizadas no exemplo. De um duplo clique no botão Salvar que está presente na última linha do controle para criar um evento para este. Veja agora na listagem 2, o code behine (arquivo .cs) deste exemplo com os comentários explicando o por que de cada item no controle.


    /// <summary>

    /// Propriedade que defini se a linha de newsletters irá aparecer ou não!

    /// </summary>

    public bool ShowNewsLetter

    {

        get { return trNews.Visible; }

        set { trNews.Visible = value; }

    }

 

    /// <summary>

    /// propriedade que define o valor do campo nome!

    /// </summary>

    public string Nome

    {

        get { return txtNome.Text; }

        set { txtNome.Text = value; }

    }

 

    /// <summary>

    /// Propriedade que defini o valor do CPF

    /// </summary>

    public string CPF

    {

        get { return txtCPF.Text; }

        set { txtCPF.Text = value; }

    }

 

    /// <summary>

    /// Propriedade que defini o valor do campo email!

    /// </summary>

    public string Email

    {

        get { return txtEmail.Text; }

        set { txtEmail.Text = value; }

    }

 

    /// <summary>

    /// Propriedade que defini o valor do campo senha!

    /// </summary>

    public string Senha

    {

        get { return txtSenha.Text; }

    }

 

    /// <summary>

    /// Propriedade que defini o valor do campo newsletters!

    /// </summary>

    public bool ReceberNews

    {

        get { return chkNews.Checked; }

        set { chkNews.Checked = value; }

    }

 

    /// <summary>

    /// Exibição da linha que mostra o botão de salvar

    /// </summary>

    public bool ShowSalvar

    {

        get { return trSalvar.Visible; }

        set { trSalvar.Visible = value; }

    }

 

    /// <summary>

    /// Método que limpa o formulário

    /// </summary>

    public void LimparFormulario()

    {

        txtNome.Text = string.Empty;

        txtCPF.Text = string.Empty;

        txtEmail.Text = string.Empty;

        chkNews.Checked = true;       

    }

 

    protected void btnEnviar_Click(object sender, EventArgs e)

    {

        //caso o evento seja diferente de nulo, ele foi implementado,

        if (Salvar != null)

            //executando o evento..

            Salvar(sender, e);

    }

 

    //declara um evento para ser implementado no controle...

    public event EventHandler Salvar;

 

Listagem 2: Code behine comentado de nosso web user control de exemplo.

 

Tendo este controle definido, já podemos utilizá-lo em nossa aplicação. Abra um webform presente no solution explorer e em modo Design, arraste o web user control FormBase.ascx para o webform, e veja que o visual studio já nos fornece uma visão sobre este controle. Se você clicar sobre o controle e olhar na janela de propriedades verá que temos todas as propriedades que definimos  em nosso controle. Veja a figura 2:


Imagem 2: Janela de propridades de nosso web user control.

<!--[if !vml]--><!--[endif]-->


Agora em nosso controle presente no webform, defina a propriedade ShowNewsLetter para "True" para exibirmos o campo de newsletters, e defina ShowSalvar, para não exibir a linha que contém o botão salvar. De um duplo clique na página e veja que é possível acessar o método "LimparFormulario()" que também está definido no controle. Veja a figura 3.

 

 

 

Imagem 3: Acessando método do web user control.

 

Outro recurso interessante são os eventos aplicados em nosso controle; para exemplificar um evento customizado em nosso controle, veja a imagem 4. Ela ilustra o código em nosso webform, implementando o evento que definimos como "Salvar" em nosso controle. Da mesma forma que o evento "Click" de um button é executado, o nosso evento Salvar, será executado quando acontecer o click de nosso botão Salvar for executado, pois aplicamos desta forma. Você poderia implementar outros eventos, como por exemplo o evento Checked de um Checkbox (com AutoPostBack=True), ou um SelectedIndexChanged de um IListControl (DropDownList, ListBox, CheckBoxList, RabioListButton, etc...), entre outras formas de se aplicar eventos.


Imagem 4: Code behine de nosso web form utilizando o web user control de exemplo

 

E por fim, a listagem 3, mostra como ficaria nosso webform utilizando nosso controle.

 

<%@ Page Language="C#" AutoEventWireup="true" 

     CodeFile="Default.aspx.cs" Inherits="_Default" %>

<%@ Register src="FormBase.ascx" tagname="FormBase" tagprefix="uc1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title></title>

</head>

<body>

    <form id="form1" runat="server">

    <uc1:FormBase ID="FormBase1" runat="server"

                  ShowNewsLetter="True"

                  ShowSalvar="False"

                  OnSalvar="FormBase1_OnSalvar" />

    </form>

</body>

</html>

Listagem 3: Webform utilizando web user control.

Conclusão:

Vimos como é fácil desenvolver e utilizar web user controls com propriedades, métodos e eventos em nossas aplicações, e através destas constrains (métodos, propriedades, eventos) podemos desenvolver controles com funcionalidades bem flexíveis, impedindo a replicação de código desnecessário e mantendo uma manutenção fácil e objetiva.


Bem pessoal, demonstrei de forma rápida e fácil de como desenvolver e utilizar web user controls.
Espero que um dia ajude alguém. Um abraço e até a próxima.

 

Referências:

http://msdn.microsoft.com/en-us/library/fb3w5b53(VS.71).aspx
http://msdn.microsoft.com/en-us/library/26db8ysc(VS.71).aspx


Download do exemplo: WebUserControl-Exemplo.zip (6,68 kb)

 

Tags:

ASP.Net

Explorando o ScriptManager

by Felipe Oriani 22. July 2009 17:15

Olá Pessoal, como vai ? Como todos sabemos, para trabalhar com os componentes do ASP.Net AJAX e Ajax Control Toolkit, devemos adicionar em nosso WebForm a instância de um ScriptManager para que ele nos permita ter controle maior das configurações do ASP.Net Ajax. Neste post irei demonstrar rápidamente alguns detalhes que as vezes passamos despercebidos aos implementar aplicações que utilizam o ASP.Net Ajax e desejamos ter maior controle em nossa aplicação.

Como recuperar a instância do ScriptManager.

Colocar o ScriptManager em uma MasterPage, é uma boa prática que muitos vem aderindo. Quando estamos em um WebForms e precisamos acessar o ScriptManager, poderiamos utilizar a instância e um ScriptManagerProxy que apontaria para nosso ScriptManager me uma MasterPage (por exemplo). Outra saída, seria utilizar a própria classe do ScriptManager e o método estático GetCurrent passando nossa página como argumento para que este método nos retorne o ScriptManager corrente e como por regra sempre temos apenas um, teremos a instância deste em mãos para facilitar a manipulação, veja o exemplo abaixo e como setar o foco em um controle:

 

//setando o foco em um controle chamado 'txtNome'
ScriptManager.GetCurrent(Page).SetFocus(txtNome);

 

Outra problema que as vezes passamos é quando precisamos testar nossas aplicações sem os postbacks internos nos UpdatePanel, você resolveria isso de forma fácil removendo o UpdatePanel, mas existe uma forma correta para desativar o ASP.Net Ajax que seria diretamente no ScriptManager alterar a propriedade EnablePartialRendering setando-a para "false". Essa propriedade ativa/desativa a renderização de forma "assíncrona" efetuada pelo ASP.Net AJAX. Desativando essa propriedade todos os UpdatePanelds da aplicação passarão a não fazer Postback assíncrono. Por default essa propriedade vem ativa; em versões anteriores do ASP.Net Ajax (conhecido como Atlas Framework), essa propriedade vinha desativada. Veja o exemplo abaixo:

 

<%-- desativando chamadas assíncronas --%>
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="false"></asp:ScriptManager>

 

Bem pessoal, foi um post rápido sobre três dicas sobre o ScriptManager.
Espero que tenham gostado
Um abraço
Att,

 

Tags:

ASP.Net

Novidades no ASP.Net 4.0 e na IDE de Desenvolvimento

by Felipe Oriani 28. May 2009 17:51

Olá pessoal, tenho mais um post aqui com um link interessante sobre as novidades no ASP.Net 4.0 e na IDE de desenvolvimento (Visual Web Developer 2010 e Visual Studio 2010). Neste link, o autor fala um pouco sobre sobre as novidades que temos em Web Forms como trabalhar com tags meta através do code behine, novas funcionalidades no ASP.Net Ajax, maior controle sobre o ViewState de server-controls, gerenciamento de IDs gerado pelos server-controls, facilidade na persistencia de controles data bouds, melhor renderização do HTML em web forms, entre outras novidades. Vale a pena dar uma conferida!

http://msdn.microsoft.com/en-us/library/s57a598e(VS.100).aspx

Espero que acompanhem.

Um abraço.

Tags:

.Net Framework | ASP.Net | Visual Studio

Adicionando atributos em objetos no WebForm.

by Felipe Oriani 22. May 2009 11:15

Olá Pessoal, vou deixar aqui uma boa prática muito comum que para programadores que vieram do Php oudo Asp para o ASP.Net costumavam fazer e agora podem fazer da mesma formaem ASP.Net. Irei demonstrar como adicionar rapitamente um atributo na tag HTML dosWeb Controls gerada peloASP.Net em tempo de execução.

O Problema

Na versão atualdo ASP.Net (3.5) e em suas versões anteriores, temos um problema quando desejamos manipular umatag HTML através de Javascript, ou seja, as tags que são utlizadas para renderizar um TextBox, CheckBox ou uma ComboBox  por exemplo, sãotags que são escritas por marcações definidas pela próprio framework, fazendo com que elas se encarreguem de gerara tag HTML correspondente ao código aplicadono ASP.Net para ser interpretado pelo Browser, o que nos impede de adicionar funcionalidadesclient-side utilizando do Javascript para determinados eventos pré-definidos durante o desenvolvimento de uma página.

Como resolver

Todos os controles que herdam da classeSystem.Web.UI.WebControls.WebControl contém uma propriedade chamadaAttributes que representa uma instancia da classe System.Web.UI.AttributeCollection. É através desta propriedade que iremos adicionar atributosas tags que serão utilizadas para renderizar em nosso HTML. Esta classe contém métodossemelhantes a um Dictonary, ou seja, pode-se incluir nesta valores do tipo string queserão representados por umachave, onde a chave é o atributo que será iniciado e o valor que será o que será aplicado ao atributo determinado pelachave. Em tempo de executação, existem duas formas de se aplicar os atributos, mas ambas refletem o mesmo resultado, veja como proceder:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

   txtCampo.Attributes("onblur") = "this.className='textBox';"
   txtCampo.Attributes("onfocus") = "this.className='textBox_focus';"
   btnCancelar.Attributes("onclick") = "return confirm('Deseja cancelar a operação ?');" 

End Sub

O exemplo ilustra o cenário onde um campo do tipo TextBox, nomeado como txtCampo seja aplicado os eventos onblur e onfocus o código javascript descrito (que tem porobjeto alterar o atributoclass datag input), enquando o outro código que exemplifica a atribuição do evento onclick em uma instância deum Button, onde o código javascript exibe uma caixa de confirmação com uma mensagem. Neste último caso, temos uma propriedade queja nos facilita este acesso ao onclick em client-side queé a OnClientClick da instancia deum Button, onde podemos atribuir umafunção javascript.

Novidades

Na versão 4.0 do ASP.Net que está para ser lançada junto ao Visual Studio 2010, espera-se que alguns destes problemas como o controle da saída HTML do Webform seja melhorada, assim teremosmaior liberdade em nosso desenvolvimento, buscando fazer um código limpo, leve e objetivo.

Tags: ,

.Net Framework | ASP.Net

Powered by BlogEngine.NET 1.5.0.7
Theme by Mads Kristensen

Sobre

Sou Felipe Oriani e trabalho com desenvolvimento web desde 2004, com tecnologias Microsoft como Asp e Asp.Net utilizando as linguagens C# e Vb.Net. Bacharel em Ciência da Computação pela Escola de Engenharia de Piracicaba,  MCP (Microsoft Certified Professional) e lider da comunidade C# Brasil. Conheça um pouco mais sobre meu Currículum.

Selos

C# Brasil