Desenvolvimento - ASP. NET

ASP.NET - Como transformar um Web Form em um User Control

Outro dia estava desenvolvendo uma aplicação web e, repentinamente, percebi que tinha um web form que eu poderia reaproveitar em outras partes da minha aplicação web. Então, senti a necessidade de transformar aquele web form em um User Control...

por Renato Guimarães



Outro dia estava desenvolvendo uma aplicação web e, repentinamente(demente), percebi que tinha um web form que eu poderia reaproveitar em outras partes da minha aplicação web. Então, senti a necessidade de transformar aquele web form em um User Control. Só que eu também percebi que são poucas as deferenças entre um Web Form e um User Control. Uma das principais diferenças de um user control é que ele não tem as tags <HTML>, <BODY> e <FORM>. No pequeno e mini artigo de hoje gostaria de mostrar a vocês os passos a seguir para fazer essa conversão. Então, vamos lá:

- Remova todas as tags <HTML>, <BODY> e <FORM>. Veja o exemplo:

Exemplo1 - WebForm com as tags que não devem ser utilizadas num user control

<%@ Page Language="C#" %>
<script runat="server">

    void Button1_Click(Object sender, EventArgs e) {
       TextBox2.Text = "Oi amigo(a), " + TextBox1.Text;
    }
</script>
<html>
<body>
    <form runat="server">

       <asp:Label id="Label1" runat="server" Font-Bold="True" Font-Size="Larger">
	   Sharp Shooters.NET - http://www.sharpshooters.org.br</asp:Label><br>
	   <br>
       <asp:Label id="Label2" runat="server">Digite seu nome:</asp:Label>
        <br>
            <asp:TextBox id="TextBox1" runat="server" Width="257px"></asp:TextBox>
        </p>
        <p>
            <asp:TextBox id="TextBox2" runat="server" Width="257px"></asp:TextBox>
            <br />
            <asp:Button id="Button1" onclick="Button1_Click" runat="server" Text="Button"></asp:Button>
        </p>
    </form>
</body>
</html>

ATENÇÃO: Se você está desenvolvendo um user control a partir de um web form que é Code-Behind, não esqueça de colocar a classe que está no arquivo aspx.cs ou aspx.vb para herdar da classe UserControl. Lá a classe do web form está herdando da classe Page.

Dentro do seu web form, caso exista uma direvita @Page, troque-a pela diretiva @Control. Para evitar erros, não esqueça de remover os atributos que são suportados pela diretiva Page e que não são suportados pela diretiva Control. Após ter removido as tags teremos o seguinte resultado:

<%@ Control Language="C#" %>
<script runat="server">
    void Button1_Click(Object sender, EventArgs e) {
       TextBox2.Text = "Oi amigo(a), " + TextBox1.Text;
    }
</script>
       <asp:Label id="Label1" runat="server" Font-Bold="True" Font-Size="Larger">
	   Sharp Shooters.NET - http://www.sharpshooters.org.br</asp:Label><br>
	   <br>
       <asp:Label id="Label2" runat="server">Digite seu nome:</asp:Label>
        <br>
            <asp:TextBox id="TextBox1" runat="server" Width="257px"></asp:TextBox>
        </p>
        <p>
            <asp:TextBox id="TextBox2" runat="server" Width="257px"></asp:TextBox>
            <br />
            <asp:Button id="Button1" onclick="Button1_Click" runat="server" Text="Button"></asp:Button>
        </p>
Adicione o atributo className a diretiva @Control. Sendo assim, seu user control será fortemente tipado e poderá ser adicionado a um web form ou a outro web control via programação.

Dê um nome significativo ao seu User Control e mude a extensão do arquivo de aspx para ascx.

O User Control é um instrumento de grande importância quando se fala em reutilização e facilidade de manutenção. Sendo assim, reveja sua aplicação e não deixe de usar e abusar dessa facilidade que só o ASP.NET pode oferecer. Bem, fico por aqui e agradeço mais uma vez a todos pela paciência e audiência.

Renato Guimarães

Renato Guimarães - Bacharel em Sistemas de Informação e trabalha com tecnologia da informação há mais de 15 anos.