LoadViewStateRecursive无法加载视图状态 [英] LoadViewStateRecursive Failed to load viewstate

查看:75
本文介绍了LoadViewStateRecursive无法加载视图状态的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我在asp.net web应用程序中创建了动态控件。因为我按照以下步骤操作

1)我创建了我的DropDown List自定义(。 ascx)控件,其中我提到了以下属性来增强它的现有功能。



MyDropDown.ascx



Hi,
I have created dynamic controls in asp.net web application.for that i followed below steps
1) I have created my DropDown List custom(.ascx) control in which i have mentioned following properties to enahance it's existing functionality.

MyDropDown.ascx

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="MyTestDropDown.ascx.cs" Inherits="MyTest.MyTestDropDown" %>
<asp:DropDownList ID="ddlList" runat="server">
</asp:DropDownList>





代码背后: -



Code Behind:-

public Object DataSource { get { return ddlList.DataSource; } set { ddlList.DataSource = value; } }
        public string DataTextField { get { return ddlList.DataTextField; } set { ddlList.DataTextField = value; } }
        public string DataValueField { get { return ddlList.DataValueField; } set { ddlList.DataValueField = value; } }
        public bool AutoPostBack { get { return ddlList.AutoPostBack; } set { ddlList.AutoPostBack = value; } }
        public string SelectedValue { get { return ddlList.SelectedValue; } set { ddlList.SelectedValue = value; } }
        public string SelectedText { get { return ddlList.SelectedItem.Text; } set { ddlList.SelectedItem.Text = value; } }
        public int SelectedIndex { get { return ddlList.SelectedIndex; } set { ddlList.SelectedIndex = value; } }
        public Unit Width { get { return ddlList.Width; } set { ddlList.Width = value; } }
        public ListItemCollection Items { get { return ddlList.Items; } }

        /*  TRIED WITH FOLLOWING OPTION BUT CAN'T LUCK :)
         public string QueryResultSeparater { get { return ViewState["QueryResultSeparater"].ToString(); } set { ViewState["QueryResultSeparater"] = value; } }
        public string Query { get { return ViewState["Query"].ToString(); } set { ViewState["Query"] = value; } }
        public string Name { get { return ViewState["Name"].ToString(); } set { ViewState["Name"] = value; } }
        public string DisplayText { get { return ViewState["DisplayText"].ToString(); } set { ViewState["DisplayText"] = value; } } */

        public string QueryResultSeparater { get; set; }
        public string Query { get; set; }
        public string Name { get; set; }
        public string DisplayText { get; set; }

        public event EventHandler DropDownSelectedIndexChanged;
        protected void Page_Load(object sender, EventArgs e)
        {

        }
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
            this.ddlList.SelectedIndexChanged += new EventHandler(ddlList_SelectedIndexChanged);
        }
        public void ClearSelection()
        {
            ddlList.ClearSelection();
        }
        private void ddlList_SelectedIndexChanged(object sender, EventArgs e)
        {
            SelectedIndexChanged(e);
        }
        protected void SelectedIndexChanged(EventArgs e)
        {
            if (DropDownSelectedIndexChanged != null)
            {
                DropDownSelectedIndexChanged(this, e);
            }
        }





2)我在text.aspx页面中调用了.ascx控件,如



2)I have called that .ascx control in text.aspx page like

protected void Page_Load(object sender, EventArgs e)
      {

 TableCell newCell = new TableCell();                      
            MyDropDown customDropdown = LoadControl(.ASCX PATH ...) as MyDropDown;
            MyDropDown ddl = customDropdown;
            ddl.ID = //name ofcontrol .....;
            ddl.DisplayText = //headertext.....
            ddl.AutoPostBack = true;
            ddl.Query = ;//Data query
            ddl.Width = Unit.Pixel(100);
            ddl.Name = //name of control;          
            ddl.DropDownSelectedIndexChanged += new EventHandler(ddl_SelectedIndexChanged);
            newCell.Controls.Add(ddl);
            row.Controls.Add(newCell);
            DataTable.Rows.Add(row); // Table object and row object is already in my page so not mentioning that logic here..
}





3)当我发布我的应用程序时,有时我在错误日志文件中收到错误,我保存错误。



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



请帮助我,如果有人知道上述问题的更好解决方案。

先谢谢。



3) When I publish my application , some time I am getting following error in errorlog file where i save error.

ERROR:=> LoadViewStateRecursive Failed to load viewstate. The control tree into which viewstate is being loaded must match the control tree that was used to save viewstate during the previous request. For example, when adding controls dynamically, the controls added during a post-back must match the type and position of the controls added during the initial request.

Please help me if any one know better solution for the above problem.
Thanks in Advance.

推荐答案





您必须(重新)在Page_Init事件中创建动态控件 - 这在加载ViewState之前发生。



您可以在Page_Load或大多数事件中首次创建控件 - 只需确保在页面再次加载时在Page_Init中重新创建它们。



如果你需要跟踪要重新创建的控件,你必须在Page_Init(即会话变量)期间使用非视图状态存储,因为视图状态没有被加载。



解释ASP.NET页面生命周期的好文章做了什么:

ASP.NET应用程序和页面生命周期 [ ^ ]


感谢您发帖回答。 />
是的我已经这样做了但是有时问题仍然存在而不是.ascx控制我已经创建了我的自定义控件所以现在等待看看:)问题仍然存在或不存在。
Thanks for posting answer.
yes I have done like that but still sometime issue was coming so instead of .ascx control i have created my custom control so now waiting lets see :) issue still persist or not.


我遇到了同样的问题。这个问题是在客户端,但它没有在我的本地系统中发生。

经过数小时的谷歌搜索,我已经在aspx页面中的表格标签上写了EnableViewState =false,它具有所有动态控件,然后我删除了所有的视图状态变量,而我在aspx页面中创建了一些隐藏的文本框,并在后面的代码中接受了DB值,并在我的代码中使用它们。然后它解决了我的问题。

但是,我仍然无法弄清楚究竟是什么问题。
I had the same issue. This issue was at client end but it didn't occur in my local system.
After hours of googling, i had written EnableViewState="false" to my table tag in aspx page which has all the dynamic controls and then i removed all the viewstate variables and instead i created some hidden textboxes in the aspx page and accepted DB values into them in code behind and used them throughout my code. It then solved my problem.
But still, i couldn't figure out what was exactly the problem.


这篇关于LoadViewStateRecursive无法加载视图状态的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆