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

C# 设置Web用户控件的属性默认值,c#,asp.net,user-controls,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.Dr

我正在尝试构建一个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

我做错了什么


谢谢。

默认值属性不会为您的属性设置任何值,它仅作为设计师的提示

如果你想要一个默认值,你必须在构造函数中设置它(或者更好,在一个属性初始值设定项中,它是在C#6中添加的)。如果要将内容存储在ViewState中,则需要展开这些属性定义并使它们访问ViewState。然后在
OnInit
方法中设置属性的默认值,以避免在客户端持久化属性

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

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