我希望能够访问.aspx页面中的属性,就像我可以访问属于BoundField的ItemStyle属性的CssClass属性一样。
<asp:BoundColumn ItemStyle-CssClass="foo" />
为了做到这一点,我有这样的事情:
public class ItemProperties
{
public string Prop1 { get; set; }
// ...
}
class MyCustomControl
{
// ...
public ItemProperties ItemProperties { get; }
// ...
}
我尝试在.aspx页面中使用它:
<myTag:MyCustomControl runat="server" ItemProperties-Prop1="test" />
唯一的支柱是,与boundField不同,我得到错误:
分析器错误消息:键入&#39; MyNamespace.MyCustomControl&#39;不具有 名为&#39; ItemProperties-Prop1&#39;。
的公共财产
我试图从asp.net设置一些ItemStyle类的注释,并使用Component作为基类,我也尝试了sintax ItemProperties.Prop1而不是ItemProperties-Prop1,但似乎没有任何帮助。有什么想法吗?
答案 0 :(得分:3)
最简单的方法是:
<myTag:MyCustomControl runat="server">
<ItemProperties Prop1="test" />
</myTag:MyCustomControl>
该属性可以使用[PersistenceMode(PersistenceMode.InnerProperty)]
进行修饰。但是这是默认行为,所以我认为你根本就不这样做。
我忘了说你还需要用ItemProperties
标记[PersistenceMode(PersistenceMode.Attribute)]
类的属性。如果不这样做,语法将为:
<myTag:MyCustomControl runat="server">
<ItemProperties>
<Prop1>test</Prop1>
</ItemProperties>
</myTag:MyCustomControl>