2013-01-25 41 views
1

我可以从其他人的控件中看到,可以在标记中设置子对象属性。例如,如果我使用Telerik的radcombobox控件,我可以写...访问标记中的子对象属性

<telerik:RadComboBox runat="server" ID="RadComboBox2"> 
    <CollapseAnimation Duration="100" /> 
</telerik:RadComboBox> 

,或者我可以写...

<telerik:RadComboBox runat="server" ID="RadComboBox2" CollapseAnimation-Duration="100"> 
</telerik:RadComboBox> 

什么技术,我必须emply让我用我写的控件做这件事?我认为我可能不得不在我的父控件中为每个属性我的子对象我公开显式创建属性。但是,我似乎没有允许创建名称中带有' - '的属性。

回答

3

尝试这种情况:

1 - 属性类定义

public class Option 
{ 
    public string First { get; set; } 
    public string Last { get; set; } 
} 

2 - 用户控件定义

public partial class CustomUC : System.Web.UI.UserControl 
{ 
    //Enables the Option properties to be filled inside the control's tag 
    [PersistenceMode(PersistenceMode.InnerProperty)] 
    //Enables the Option properties to be filled on the control's tag 
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] 
    public Option Options 
    { 
     get;set; 
    } 

    protected void Page_Load(object sender, EventArgs e) { } 
} 

3 - 标记:

<own:CustomUC ID="uc" runat="server" Options-First="First" Options-Last="Last" /> 

<own:CustomUC ID="uc" runat="server" > 
    <Options-First="First" Options-Last="Last" /> 
</own:CustomUC> 

注意:您必须首先使用您自己的tagPrefix引用usercontrol程序集。

+0

酷!这很好,我有它的工作。正如你的文章所建议的,我现在可以编写'Options-First =“First”',但是它似乎需要额外的魔力才能让我有一个内部内容标签,这样我就可以写出

+0

是的!一些额外的魔法。更新了答案。 –

+0

不错。这一切都有效。非常感谢。 –