我创建了一个自定义服务器控件来处理一些数据,将数据存储到ViewState,然后从该数据中呈现自己.我正在使用调试器,可以物理地看到数据设置为ViewState:
public string RawData
{
get
{
string result = null;
if (ViewState["RawData"] != null)
{
result = ViewState["RawData"].ToString();
}
return result;
}
set
{
ViewState["RawData"] = value;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,在回发后,ViewState值不会保留,并且为null.为什么会这样?我在哪里可以尝试进行故障排除?我可以说,自使用这种方法以来,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);
}
Run Code Online (Sandbox Code Playgroud)
一个可能的错误来源是如果您在OnInit事件期间设置Viewstate值.ViewState仅在调用"TrackViewState"后存储.http://msdn.microsoft.com/en-us/library/ms972976.aspx
也许你是"早到".如果在渲染期间设置数据,则"为时已晚".
编辑:你在"渲染"期间改变你的价值 - 这太晚了!在渲染期间,ViewState已写入HTML流.尝试将代码移动到OnPreRender()
| 归档时间: |
|
| 查看次数: |
1976 次 |
| 最近记录: |