Как создать собственный элемент управления ASP.NET с свойством коллекции?

Я хочу сделать что-то похожее на

<cstm:mycontrol runat="server">
 <myitem attr="something">
 </myitem></cstm:mycontrol>

Какой код для костей должен был вынуть?

Пример Рика показывает что-то похожее на

<cstm:mycontrol runat="server">
 <myitems>
 <cstm:myitem attr="something">
 <cstm:myitem attr="something">
 </cstm:myitem></cstm:myitem></myitems>
</cstm:mycontrol>

Я бы предпочел более краткий синтаксис, если это возможно.

Примечание. Не стесняйтесь предлагать лучший заголовок или описание. Даже если у вас нет прав на редактирование, я рад редактировать эту запись ради сообщества.

1 ответ

Здесь действительно простой пример управления, который выполняет именно то, что вы ищете:

namespace TestControl
{
 [ParseChildren(true, DefaultProperty = "Names")]
 public class MyControl : Control
 {
 public MyControl()
 {
 this.Names = new List<personname>();
 }
 [PersistenceMode(PersistenceMode.InnerDefaultProperty)]
 public List<personname> Names { get; set; }
 }
 public class PersonName
 {
 public string Name { get; set; }
 }
}
</personname></personname>

И вот пример использования:

<%@ Register Namespace="TestControl" TagPrefix="TestControl" %>
<testcontrol:mycontrol runat="server" id="MyControl1">
 
 
</testcontrol:mycontrol>

licensed under cc by-sa 3.0 with attribution.