ViewState Fehler bei dynamischer NavigationControl



  • Hallo zusammen

    Ich habe folgendes Problem.

    Ich habe in meiner Seite ein dynamisches NavigationControl (ein User Control) eingebunden. Dieses NavigationControl dient als Auswahlmenu für den Benutzer. Je nach Status des Benutzers hat dieser eine andere Anzahl an Menuauswahlen (deshalb dynamisch).
    Das NavigationControl wird dargestellt und auch das Switchen von einem Thema in ein anderes funktioniert einwandfrei.

    Allerdings habe ich folgendes Problem: Will ich nun auf einer Seite auf einen Button klicke (also ein PostBack auslöse), so bekomme ich eine Fehlermeldung:

    Die Zustandsinformationen sind für diese Seite ungültig. Möglicherweise sind sie fehlerhaft.
    Beschreibung: Unbehandelte Ausnahme beim Ausführen der aktuellen Webanforderung. Überprüfen Sie die Stapelüberwachung, um weitere Informationen über diesen Fehler anzuzeigen und festzustellen, wo der Fehler im Code verursacht wurde.

    Ausnahmedetails: System.Web.HttpException: Die Zustandsinformationen sind für diese Seite ungültig. Möglicherweise sind sie fehlerhaft.

    der Code zur Generation des NavigationControls ist folgender:

    C#-Code:
    [ToolboxData("<{0}:NavigationControl runat=server></{0}:NavigationControl>")]
        public class NavigationControl : WebControl
        {
             protected override void OnInit(EventArgs e)
            {
                base.OnInit(e);
            }
            [Bindable(true)]
            [Category("Appearance")]
            [DefaultValue("")]
            [Localizable(true)]
    
            public String[,] DataList
            {
                get
                {
                //    String[,] s = (String[0 , 0]);
    
                    String[,] s = (String[,])ViewState["DataList"];
                    if ((s == null))
                    { return new String[0, 0]; }
                    else { return s; }
                //    return s;
                } // get
    
                set
                {
                    ViewState["DataList"] = value;
                } // set
            }
    
            protected override void OnLoad(EventArgs e)
            {
                 base.OnLoad(e);
                if (!Page.IsPostBack)
                {
                    DataList = aEinstellungen;
    
                     do
                    {
                            LinkButton objButton = new LinkButton();
                            objButton.Text = setLabels(DataList[iIndex, 4]);
                            objButton.CssClass = "menuMain";
                            astrButtonLength[iButtonIndex] = DataList[iIndex,0];
                            astrButtonClass[iButtonIndex] = DataList[iIndex,5];
                            iButtonIndex++;
                            objButton.PostBackUrl = ("~/" + DataList[iIndex, 1]);
                            this.Controls.Add(objButton);
                        iIndex++;
                    } // do
                    while(iIndex<cNrOfTabs);
                }
            }
    
            protected override void RenderContents(HtmlTextWriter output)
            {
                output.Write("<table class='menuMainNavigationControl'><tr>");
                for (int i = 0; i < this.Controls.Count; i++)
                {
                    output.Write("<td Class='" + astrButtonClass[i] + "'; style='width:" + astrButtonLength[i] + "px'");
                    this.Controls[i].RenderControl(output);
                    output.Write("</td>");
                } // for
                output.Write("</tr></table>");
            }
    

    Der Fehler findet in der Zeile base.oninit(e) statt.....

    Danke für eure Hilfe

    Gruss Dinozzo


Anmelden zum Antworten