ASP.Net自定义控件 - 覆盖“文本”属性

时间:2012-01-26 20:55:08

标签: asp.net

这似乎很简单,但它对我不起作用。我绝对需要知道如何覆盖我创建的服务器控件的“Text”属性,该属性继承自“Label”。当控件被放入ASP Web表单时,我希望text属性已经设置为某个值。我试过了:

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

但它不起作用; “Text”属性显示为空白 - 当我尝试编辑它时,我可以将其更改为任何,除了“DefaultValue”attrib中指定的值。这个属性应该是可以覆盖的。

我还需要能够设置“ID”属性,以便在表单上删除时将其设置为特定值。这可能吗?

任何建议都将不胜感激!

2 个答案:

答案 0 :(得分: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; }
  }
}

答案 1 :(得分:0)

DefaultValue属性用于在“属性”选项卡中显示默认值。 因此,当您启动网站时没有为Text属性指定值.net使用此属性。 恕我直言,你没有机会这样做。遗憾!