asp.net - route - select asp-for asp-items
¿Cómo construyes un control personalizado ASP.NET con una propiedad de colección? (1)
Estoy buscando hacer algo similar a
<cstm:MyControl runat="server">
<myItem attr="something" />
<myItem attr="something" />
</cstm:MyControl>
¿Cuál es el código básico necesario para lograr esto?
El ejemplo de Rick muestra algo parecido a
<cstm:MyControl runat="server">
<myItems>
<cstm:myItem attr="something" />
<cstm:myItem attr="something" />
</myItems>
</cstm:MyControl>
Preferiría la sintaxis más concisa si es posible.
Nota: No dude en sugerir un título o una descripción mejor. Incluso si no tiene derechos de edición, me complace editar la entrada por el bien de la comunidad.
Aquí hay un control de ejemplo muy simple que hace exactamente lo que está buscando:
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; }
}
}
Y, aquí hay un ejemplo de uso:
<%@ Register Namespace="TestControl" TagPrefix="TestControl" %>
<TestControl:MyControl runat="server" ID="MyControl1">
<TestControl:PersonName Name="Chris"></TestControl:PersonName>
<TestControl:PersonName Name="John"></TestControl:PersonName>
</TestControl:MyControl>