我有一个关于默认值属性的问题。
当我在设计模式下将控件添加到页面时,默认值不起作用。这是我的代码:
[DefaultProperty("Text")]
[ToolboxData("<{0}:KHTLabel runat=server key=dfd></{0}:KHTLabel>")]
public class KHTLabel : Label ,IKHTBaseControl
{
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("KHT")]
[Localizable(true)]
public string Key
{
get
{
String s = (String)ViewState["Key"];
return ((s == null) ? String.Empty : s);
}
set
{
ViewState["Key"] = value;
}
}
protected override void RenderContents(HtmlTextWriter writer)
{......但是,在设计模式下,当我从工具箱添加控件时,该键并不存在
<cc1:KHTLabel ID="KHTLabel1" runat="server"></cc1:KHTLabel>发布于 2011-11-20 03:18:48
通过在ToolboxDataAttribute中显式命名第一个答案(<cc1:KHTLabel ID="KHTLabel1" runat="server" Key="KHT"></cc1:KHTLabel>),您可以获得您在备注中提到的结果。要使其也成为实际的默认值,您仍然必须在该属性的getter中返回该值。这会导致在您的类中重复三次相同的值。
顺便说一句,我不明白为什么你的ToolboxData中现在有key=dfd,而属性名是Key,并且是string类型。
[DefaultProperty("Text")]
[ToolboxData("<{0}:KHTLabel runat=server Key=\"KHT\"></{0}:KHTLabel>")]
public class KHTLabel : Label//, IKHTBaseControl
{
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("KHT")]
[Localizable(true)]
public string Key
{
get
{
var s = (String)ViewState["Key"];
return (s ?? "KHT");
}
set { ViewState["Key"] = value; }
}
protected override void RenderContents(HtmlTextWriter writer)
{
// TODO: Implement logic
}
}https://stackoverflow.com/questions/3657131
复制相似问题