设置Web用户控件的属性默认值

时间:2010-04-15 20:48:18

标签: c# asp.net user-controls

我正在尝试构建一个Web用户控件,并在代码隐藏中为其属性设置一些默认值,如下所示:

[DefaultValue(typeof(int), "50")]
public int Height { get; set; }

[DefaultValue(typeof(string), "string.Empty")]
public string FamilyName { get; set; }

[DefaultValue(typeof(Color), "Orange")]
public System.Drawing.Color ForeColor { get; set; }

当我将用户控件添加到页面并调用它时没有任何属性:

<uc1:Usercontrol ID="uc" runat="server" />

未设置默认值,并且每个属性都为0或null。

我做错了什么?

感谢。

2 个答案:

答案 0 :(得分:3)

DefaultValueAttribute不会为您的财产设置任何值,它只是设计师的提示等等。

如果你想要一个默认值,你必须在构造函数中设置它(甚至更好,在属性初始值设定器中,它是在C#6中添加的)。如果要将您的东西存储在ViewState中,则需要扩展这些属性定义并使它们访问ViewState。然后在OnInit方法中设置属性的默认值,以避免在客户端保留它们。

答案 1 :(得分:0)

来自http://msdn.microsoft.com/en-us/library/system.componentmodel.defaultvalueattribute.aspx

请注意 DefaultValueAttribute不会导致使用属性的值自动初始化成员。您必须在代码中设置初始值。

换句话说,DefaultValueAttribute只是为您提供了一个声明您想要该值的位置。您仍然必须编写代码来填充属性中的值。