У меня есть пользовательский элемент управления, который я использую на нескольких страницах для отображения информации об объекте. Всякий раз, когда мне нужно использовать этот usercontrol, я вызываю метод Display (on usercontrol) и передаю некоторые значения.
public void Display(string name, List<Items> items)
{
// Set a few protected properties so I can display values from the aspx page
}
Это работает нормально, но теперь мне нужно использовать этот элемент управления внутри цикла foreach на странице aspx.
<% foreach (var c in Categories) { %>
<uc:ItemsControl runat="server"/>
<% } %>
У объекта категорий есть методы и свойства, которые я бы иначе передал в метод Display. Так как бы мне правильно установить значения?
Я попытался сделать свойства пользовательского элемента управления общедоступными и просто установить их следующим образом:
<uc:ItemsControl Items="<%# c.Items %>"
OtherProperty="<%# c.GetProperty() %>"
runat="server"/>
Это не работает, потому что отправляемые свойства пусты. Если я использую <% =, тогда он не работает и на самом деле выдает ошибку, потому что не распознает 'c' (если я не уберу runat = "server", то он, по крайней мере, скомпилируется, но все равно не будет работать . </p>
Как правильно это сделать?
Редактировать: Кроме того, элемент управления повторителем может упростить привязку данных, но я бы предпочел избегать использования любых элементов управления .NET.