动态添加用户控件和ViewState

时间:2015-11-04 12:22:55

标签: c# asp.net c#-4.0 user-controls

我想动态地将用户控件添加到我的页面。我编写了这段代码,每次DropDownList发生更改时,都应呈现适当的用户控件:

if (!IsPostBack)
{
    BindMainReports();
}
else
{
    PlaceHolderControls.Controls.Clear();
    if (drpReportType.SelectedValue != "-" && drpReportType.SelectedValue != "")
    {
        Control ctrl = Page.LoadControl("UC/Reports/" + drpReportType.SelectedValue + ".ascx");
        PlaceHolderControls.Controls.Add(ctrl);
    }
}

这段代码第一次工作正常,但是当我第二次更改DropDownList时,我收到此错误:

  

无法加载视图状态。正在加载视图状态的控制树必须与在上一个请求期间用于保存视图状态的控制树匹配。例如,在动态添加控件时,回发期间添加的控件必须与初始请求期间添加的控件的类型和位置相匹配。

我如何解决问题。

感谢

1 个答案:

答案 0 :(得分:0)

只需为EnableViewState="false"

添加PlaceHolderControls即可