2015-03-18 69 views
0

我試圖用「嵌套」屬性實現自定義複合WebControl,即將一組屬性封裝到類中。作爲對象的ASP.NET自定義WebControl嵌套屬性

例如,在這個複合控件中,我放置了一個按鈕。我希望能夠將按鈕的相關屬性封裝到類中(例如,buttonText,buttonStyle等)。這將使得多按鈕/控件組合控件中的定義屬性更加容易且一致且直觀。

注:我想封裝的屬性出現在VisualStudio中的屬性對話框中,以與Style/Font非常相似的方式分組。

樣品:

public class fooButtonProperties 
{ 
    [Category("Appearance"), Description("URL for the Profile page")] 
    public string URL { get; set; } 

    [Category("Appearance"), Description("Text to display"), DefaultValue("Profile")] 
    public string ButtonText { get; set; } 

    /// <summary> 
    /// Position of the control on the page, default is Right-Aligned 
    /// </summary> 
    [Category("Appearance"), Description("Position in the Header"), DefaultValue(PIONEERFramework.Web.UI.WebControls.PageHeaderFooter.Classes.DesignEnum.DesignLayoutEnums.HorizontalPositions.Right)] 
///Here is the composite control 
    public PIONEERFramework.Web.UI.WebControls.PageHeaderFooter.Classes.DesignEnum.DesignLayoutEnums.HorizontalPositions PositionInHeader { get; set; } 
} 
public class myCustomClass: System.Web.UI.WebControls.CompositeControl 
{ 
    protected System.Web.UI.HtmlControls.HtmlLink myButton; 
    [Category("Appearance")] 
    public fooButtonProperties myButtonProperties { get { return _profileButtonProp; } } 
    private fooButtonProperties _myeButtonProp; 

    #region Constructor 
    public myCustomClass() 
    { 
     this._myeButtonProp = new fooButtonProperties(); 
    } 
    #endregion 
} 

不幸的是,這種做法DOS無法正常工作。新屬性myButtonProperties完全不出現在「Properies」對話框中。

回答

0

要創建一個嵌套屬性使用System.ComponentModel.DesignerSerializationVisibility屬性在你的控制是這樣的:

[Category("Appearance")] 
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] 
public fooButtonProperties myButtonProperties { get { return _profileButtonProp; } } 

的最後一個屬性的名稱將是「myButtonProperties-URL」(連字符)。您還可以將此屬性添加到fooButtonProperties類中的屬性中,以實現更多嵌套。
請注意,您可能必須關閉aspx文件並重新構建解決方案才能刷新「屬性」窗口。

Category屬性適用於您的控件和嵌套類。

描述的Description屬性似乎是正確的,但它不起作用,這可能是Visual Studio中的錯誤。我發現這個鏈接: https://www.beta.microsoft.com/VisualStudio/feedback/details/653335/webcontrol-property-descriptions-do-not-appear-in-property-window

此外,我觀察到沒有任何屬性顯示說明。

Regards
Oli

相關問題