将具有集合属性的自定义控件添加到SharePoint页面布局

时间:2011-01-20 12:49:37

标签: sharepoint custom-controls

我已根据How do you build an ASP.NET custom control with a collection property?

上的示例创建了一个带有集合属性的自定义控件

当控件添加到公共ASP.Net aspx页面时,它按预期工作。但是,当添加到Sharepoint中的页面布局时,将引发以下错误:

  

无法将'System.Web.UI.CollectionBuilder'类型的对象强制转换为'System.Collections.Generic.List`1 [mytypes.mytype]'。

代码与上面链接中显示的示例提供的代码非常相似。我不认为错误在于控件,因为它在普通的Web项目中工作正常。

1 个答案:

答案 0 :(得分:2)

我认为你不能在sharepoint中使用通用列表。使用ArrayList或自定义List集合(使用asp:ListItem作为示例,它有自己的集合类型)

[ParseChildren(true, "Names")]
public class MyControl : Control {
    private List<PersonName> names;
    public MyControl() {
        names = new List<PersonName>();
    }
    [PersistenceMode(PersistenceMode.InnerDefaultProperty)]
    public List<PersonName> Names {
        get { return this.names; }
    }
}
public class PersonName {
    public string Name { get; set; }
}

<强>更新

啊,我现在看到问题,这与通用列表无关,这是因为你正在进行初始化。

  1. 创建一个私有变量来保存列表private List<PersonName> names;
  2. 确保该属性没有setter