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)