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