G+

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

Программирование Asp.net
Предыдущий Следующий

asp.net logo Давно уже пишу на 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) {  %>
        <uc:PersonAccessStatus ID="PersonAccessStatus"
                  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(control) %>     
<%}%>

, где метод  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);
}

 

 

Комментарий:
Самостоятельный отпуск Опыт заказа вывоза мусора в Киеве