2
我创建了一个自定义服务器控件,用于处理一些数据,将该数据存储到ViewState,然后从该数据中呈现自己。我使用调试器,可以实际看到的数据越来越设定的ViewState:ASP.NET自定义服务器控件不会持久ViewState
public string RawData
{
get
{
string result = null;
if (ViewState["RawData"] != null)
{
result = ViewState["RawData"].ToString();
}
return result;
}
set
{
ViewState["RawData"] = value;
}
}
然而,经过回发的ViewState值不保留,并且它为空。这是为什么发生?我在哪里可以尝试排除故障?我可以看出,自从使用这种方法以来,ViewState隐藏字段的长度已经增加了。
在此先感谢!
编辑: 这里是我的Render方法,看看我设置的ViewState:错误的
protected override void Render(HtmlTextWriter writer)
{
if (this.RawData == null)
{
StringBuilder content = new StringBuilder();
content.Append(this.BuildHeader());
content.Append(this.BuildLevelsMarkup());
content.Append(this.BuildFooter());
this.RawData = content.ToString();
}
writer.Write(this.RawData);
}
我在Page_Load上加载我的数据。我在原始文章中添加了更多代码,以便您可以查看我何时设置数据。 – 2009-12-21 18:29:22
你的代码表明你正在Render中执行它,正如Arthur正确指出的那样太晚了。 – 2009-12-22 09:30:50
感谢您的编辑......我忽略了这一事实。 OnPreRender()非常棒! – 2009-12-22 22:23:02