我可以从其他人的控件中看到,可以在标记中设置子对象属性。例如,如果我使用Telerik的RadComboBox,我可以写...
<telerik:RadComboBox runat="server" ID="RadComboBox2">
<CollapseAnimation Duration="100" />
</telerik:RadComboBox>
或者,我可以写......
<telerik:RadComboBox runat="server" ID="RadComboBox2" CollapseAnimation-Duration="100">
</telerik:RadComboBox>
我有什么技巧可以让我用我写的控件来做这件事?我认为我可能必须在我的父控件中为我公开的子对象的每个属性显式创建属性。但是,我似乎不允许在名称中创建一个带有“ - ”的属性。
答案 0 :(得分:3)
试试这个:
1 - 属性类定义
public class Option
{
public string First { get; set; }
public string Last { get; set; }
}
2 - UserControl定义
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程序集。