gpt4 book ai didi

asp.net - ASP.NET 服务器控件中的默认值

转载 作者:行者123 更新时间:2023-12-02 16:48:51 25 4
gpt4 key购买 nike

我的默认值属性有问题。

当我在设计模式下将控件添加到页面时,默认值不起作用。这是我的代码:

[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>

最佳答案

恐怕这不是 [DefaultValue] 属性的作用。它的作用是让 Visual Studio 设计器(特别是“属性”网格)确定默认显示的内容,以及如何知道将值显示为粗体强>当它与默认值不同时。

您可以在代码中添加一些将“KHT”值保存为默认值的内容。 this 2008 blog posting of mine中有一些相关细节。 .

以下代码相当初级,我无法验证它是否可以编译,但它应该可以让您了解如何将 DefaultValueAttribute 的值“强制”处理为ViewState:

private string GetDefaultAttributeValueForProperty(string propertyName)
{
var attributesForProperty = (from prop in typeof(KHTLabel).GetProperties()
where prop.Name == propertyName
select System.Attribute.GetCustomAttributes(prop)).First();
var defaultValueAttribute = (from attr in attributesForProperty
where attr.GetType() == typeof(DefaultValueAttribute)
select ((DefaultValueAttribute)attr).Value).FirstOrDefault();

return Convert.ToString(defaultValueAttribute);
}
public KHTLabel()
{
ViewState["Key"] = GetDefaultAttributeValueForProperty("Key");
}

关于asp.net - ASP.NET 服务器控件中的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3657131/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com