我将用户控制动态添加到页面并尝试保存到viewstate 当我试图将占位符保存到视图状态时,我收到了此错误 “PlaceHolder不是标记为可序列化的。”
这是我的代码
Controls_PriceControl ctrl = (Controls_PriceControl)LoadControl("../Controls/PriceControl.ascx");
plcPrices.Controls.Add(ctrl);
ViewState["plcPrices"] = plcPrices;
你可以帮我解决这个问题吗?
谢谢!
答案 0 :(得分:1)
您不应将实际控件保存到ViewState,而只保存其状态(通常是属性)。保存和加载控件属性通常可以直接在属性声明中完成:
public class FooControl : Control
{
public string Bar
{
get { return ViewState["Bar"] as string; }
set { return ViewState["Bar"] = value; }
}
}