这似乎很简单,但它对我不起作用。我绝对需要知道如何覆盖我创建的服务器控件的“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”属性,以便在表单上删除时将其设置为特定值。这可能吗?
任何建议都将不胜感激!
答案 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使用此属性。 恕我直言,你没有机会这样做。遗憾!