保存在viewstate中的自定义UserControl的属性会丢失其值

时间:2010-07-28 11:04:42

标签: asp.net user-controls viewstate

我在aspx页面中有一个自定义控件,它有一个名为Size

的属性
public int Size
{
     get { return Convert.ToInt32(ViewState["CreativeSize"]); }
     set { ViewState["CreativeSize"] = value; }
}

此属性在aspx页面中设置为值,在由页面中的Button控件(不在自定义控件中)调用的回发期间为500。

我在自定义控件中还有一个按钮,可以像这样引发回发

protected void btnUpload_Click(object sender, EventArgs e)
{
     if (fuBannerfile.HasFile)
         if (fuBannerfile.FileContent.Length / 1024 > this.Size)
             ;//code here not important
}

当调用此事件时,“this.Size”属性为0.我还注意到在调试过程中,在页面的Page_Load期间,如果我像这样访问属性:

int size = customControlId.Size;

该属性设置为500.但在此之后,当调试器到达控件内的事件时,属性为0.

知道为什么会这样,或者是什么导致它?

1 个答案:

答案 0 :(得分:0)

刚刚发现了问题所在。

我在同一页面中有5个相同的控件,并且我设置了错误控件的Size属性....

不能相信我已经失去了2个小时。