asp.net webforms从.aspx访问嵌套属性

时间:2014-06-25 13:33:43

标签: c# asp.net webforms custom-controls

我希望能够访问.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,但似乎没有任何帮助。有什么想法吗?

1 个答案:

答案 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>