Передати параметр в Usercontrol asp.net set param

26

Програмування Asp.net
Попередній

Наступний

Давно вже пишу на ASP.NET MVC, але є старі проекти на WebForms, які потрібно підтримувати. Виникла проблема, як передати параметр в UserControl. Приклад коду:

Сторінка *.acsx.cs:

public partial class controls_PersonAccessStatus
: System.Web.UI.UserControl
{
public Person Person { get; set; }
protected void Page_Load(object sender, EventArgs e)
{

}
}

Сторінка aspx:

<% foreach (Person p in persons) { %>

runat=”server” Person=p />

Так от, змінну “p” сприймається як рядок.

Є два методи рішення:

1) На сторінка aspx, там де потрібно вставити контрол пишемо:

<%foreach (Person p in persons)
{
controls_PersonAccessStatus control
= LoadControl(“~/App_Controls/PersonAccessStatus.ascx”)
as controls_PersonAccessStatus;
control.Person = p; %>

, де метод RenderControl:

public string RenderControl(Control ctrl)
{
StringBuilder sb = new StringBuilder();
StringWriter tw = new StringWriter(sb);
HtmlTextWriter hw = new HtmlTextWriter(tw);

ctrl.RenderControl(hw);
return sb.ToString();
}

2) В коді сторінки пишемо:

foreach (Person p in persons)
{
control = LoadControl(“~/App_Controls/PersonAccessStatus.ascx”)
as PersonAccessStatus;

control.Person = p;

SomeContainer.Controls.Add(control);
}