2012-01-26 15 views
0

これは非常に単純なようですが、私のためには機能しません。私は、 "Label"から継承した、作成したサーバーコントロールの "Text"プロパティをオーバーライドする方法を知っておく必要があります。コントロールをASP Webフォームにドロップすると、textプロパティを既に特定の値に設定する必要があります。私は試しました:ASP.Netカスタムコントロール - "Text"プロパティのオーバーライド

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

しかし、それは動作しません。 "Text"プロパティが空白になります。編集しようとすると、に変更されます。 "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 –

答えて

3

は、それが 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プロパティの値を指定せずにWebサイトを起動すると、.netはこれを使用します。 IMHOあなたはそれを行う機会がありません。ごめんなさい!

あなたが ToolBoxDataAttributeを使用することができます。このため
関連する問題