如何为自定义ASP.NET控件提供将XML标记解析为集合的功能?

时间:2010-04-01 12:18:09

标签: c# asp.net collections custom-controls designer

我正在编写一个自定义的ASP.NET webcontrol,并希望它有一组自定义项,这些项也可以在XML标记中指定。像这样:

class MyControl: WebControl
{
    public IList<MyItemType> MyItems { get; private set; }
}

在标记中:

<asd:MyControl runat="server" id="mc1">
    <MyItems>
        <MyDerivedCustomItem asd="dsa"/>
        <MyOtherDerivedCustomItem asd="dsa"/>
    </MyItems>
</asd:MyControl>

我该怎么做?我虽然这是关于在集合上实现一些接口或者向属性添加一些特殊属性,但我做的任何事情似乎都无效。

2 个答案:

答案 0 :(得分:1)

哈,明白了!

似乎IList<T>是一种不好的类型。它需要是实现普通旧IList的东西。虽然实施可以是明确的。提供具有相同名称但强类型参数的方法覆盖将限制标记编辑器中的可用选项。

当然,添加标准属性似乎也是必要的:

[PersistenceMode(PersistenceMode.InnerProperty)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
[MergableProperty(false)]

不确定他们都做了什么(文档在很多地方都很难描述),但它确实有效!

答案 1 :(得分:0)

也许这篇MSDN文章将为您提供一个良好的开端:http://msdn.microsoft.com/en-us/library/9txe1d4x.aspx

要看的一个重要属性是:
[PersistenceMode(PersistenceMode.InnerDefaultProperty)]
这将产生预期的效果......

HTH。