我已根据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项目中工作正常。
答案 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; }
}
<强>更新强>
啊,我现在看到问题,这与通用列表无关,这是因为你正在进行初始化。
private List<PersonName> names;