2012-01-26 66 views
0

這似乎很簡單,但它不適合我。我絕望地需要知道如何覆蓋我創建的服務器控件的「Text」屬性,該控件從「Label」繼承。將控件放入ASP Web窗體時,我希望text屬性已被設置爲某個值。我試過:ASP.Net自定義控件 - 覆蓋「文本」屬性

[Browsable(true), Bindable(true), Category("Behavior"), Localizable(true)] 
[DefaultValue("00:00:00")] 
public override string Text{get; set;} 

但它不工作; 「文本」屬性顯示空白 - 當我嘗試編輯它時,我可以將其更改爲以外的任何內容,但的值在「DefaultValue」屬性中指定。該屬性應該是可覆蓋的。

我還需要能夠設置「ID」屬性,以便在表單上放置時將其設置爲特定值。這可能嗎?

任何建議將不勝感激!

+0

這是類似或重複的:http://stackoverflow.com/questions/3657131/default-value-in-asp -net服務器控制] [1] [1]:http://stackoverflow.com/questions/3657131/default-value-in-asp-net-server-control – 2012-01-26 21:58:05

回答

3

爲此,您可以使用ToolBoxDataAttribute

指定一個自定義的控制產生時,它是 從工具工具箱拖到如Microsoft Visual Studio中的默認標籤。

默認情況下,諸如Visual Studio的工具的可視化設計器 會創建一個空標記。這是一個標籤,表示控件從 視覺設計器的工具箱中拖放到設計圖面時的默認狀態下的控件。要指定初始缺省值 值,控件可以使用此屬性。您可以使用此 屬性來自定義將控件從工具箱拖到表單上時放置在 設計器中的初始HTML內容。

這將是這個樣子的你的控制:

[ToolBoxData("<{0}:TimeLabel ID='TL1' Text='00:00:00' runat='server' />")] 
public class TimeLabel : System.Web.UI.WebControls.Label 
{ 
    [DefaultValue("00:00:00")] 
    public override string Text 
    { 
    get { return ViewState["Text"] != null ? (string)ViewState["Text"] : "00:00:00"; } 
    set { ViewState["Text"] = value; } 
    } 
} 
+0

嘿@michielvoo(把你的名字和錯誤的評論聯繫起來!)。 Thx的建議,它的工作!我回顧了文檔,現在(我想!)對自定義控件中的所有「HTML生成」有了全面的瞭解。 Thx用於向右轉向我 – user1172173

+0

哦,只是一個腳註;我也刪除了「DefaultValue」聲明,因爲它看起來很無關緊要。 – user1172173

+0

@ user1172173'[DefaultValue]'屬性對編輯器很有幫助,因爲它在屬性窗口中被Visual Studio使用。除了「00:00:00」以外的任何值都將由Visual Studio以**粗體顯示**。 –

0

DefaultValue屬性旨在在「屬性」選項卡中顯示默認值。 因此,當您啓動網站時未指定您的Text屬性的值.net使用此值。恕我直言,你沒有機會這樣做。抱歉!