por Cesar Cassiano Schimanco

Passar parâmetro para User Control (ascx) - ASP.NET

Esta é uma dica para aqueles que precisam passar parâmetros para um User Control, então criei dois exemplos que mostram como passar um parâmetro de uma página .aspx para um .ascx.
O funcionamento é simples, basta criar uma variável do tipo pública no UserControl e depois passar o valor dela via parâmetro na página aspx. O nome do parâmetro é o mesmo nome da variável pública declarada no UserControl. Veja os exemplos.


Primeiro passo é criar uma variável publica no UserControl.
UserControl.ascx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class UserControl : System.Web.UI.UserControl
{
    public int idNoticia;
    public string teste;
    protected void Page_Load(object sender, EventArgs e)
    {
        //Imprimir o valor de teste na tela
        litExemplo.Text = teste;

        //Carrega notícia de acordo como ID passado.
        litNoticia.Text = CarregaNoticia(idNoticia);
    }

    private string CarregaNoticia(int idNoticia)
    {
        //código responsável pelo carregamento da notícia
        return null;
    }
}

 

Agora vamos passar os parâmetros para o User Control na página aspx
Perceba que basta passa o valor para as variáveis públicas declaradas no UserControl como nas linhas 14 e 16.
Default.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register Src="~/UserControl.ascx" TagPrefix="uc1" TagName="UserControl" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <!-- Carregando primeiro user control com idNoticia="1" e teste="Texto 1"-->
        <uc1:UserControl runat="server" idNoticia="1" teste="Texto 1" ID="UserControl1" />
        <!-- Carregando segundo user control com idNoticia="2" e teste="Texto 2"-->
        <uc1:UserControl runat="server" idNoticia="2" teste="Texto 2" ID="UserControl2" />
    </div>
    </form>
</body>
</html>

 

Para passar parâmetros pelo Page_Load é a mesma coisa. Veja o exemplo.
Default.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        UserControl1.idNoticia = 1;
        UserControl1.teste = "Texto 1 (Page_Load)";

        UserControl2.idNoticia = 1;
        UserControl2.teste = "Texto 2 (Page_Load)";

    }
}

 

Resultado:

Texto 1 (Page_Load)

Texto 2 (Page_Load)

Comentários

Carregando comentários

Postar um novo comentário



Processando...