Failed to load viewstate.   otázka

ASP.NET WebForms

Dobrý den, začínám s ASP.Net a narazil jsem na chybu se kterou si nevím rady. Mám vytvořenu MasterPage a v ní jeden ContenPlaceHolder, do kterého načítám content jiné stránky. V tomto contentu mám DropDown List a DataGrid. Podle vybrané hodnoty v DDL se přefiltruje seznam v DataGridu. Na samostatné stránce vše fungovalo bez problémů, ale pokud chci obsah přefiltrovat v rámci MasterPage, aplikace vrací tuto chybu:

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.

Něco jsem si četl na zahraničních fórech, ale moudrý z toho nejsem. Mohl by mi někdo poradit? Děkuji a zdravím.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Negenerujete ve stránce dynamicky (v kódu) nějaké komponenty? Tato chyba obykle nastává, když odebíráte nebo přidáváte komponenty tam, kde nemáte.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nic automaticky negeneruji (ani bych to neuměl :-)) Opravdu mám v contentu jen DDL připojený k databázi a Gridview také připojený k databázi. Podle vybrané hodnoty DDL se mění zobrazení v Gridview. Vše fungovalo bez problémů, ty nastaly až když jsem z původní stránky udělal content stránku a navázal ji na ContentPlaceHolder v MasterPage.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zkuste prosím poslat kód stránky. Podle mého názoru taky vkládáte něco podivného.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
<%@ Page Language="VB" AutoEventWireup="false"  MasterPageFile="~/MasterPage.master"  CodeFile="Katalog.aspx.vb" Inherits="Katalog" %>


<asp:Content ID="Katalog" ContentPlaceHolderID=ContentPlaceHolder1 Runat="Server" EnableViewState="true">

        <asp:SqlDataSource ID="ZdrojDatKategorie" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
            SelectCommand="SELECT [IDKategorie], [KategorieNazev] FROM [Kategorie]" EnableViewState="false"></asp:SqlDataSource>
        Zvolte kategorii:
        <asp:DropDownList ID="ddlKategorie" runat="server" AutoPostBack="True" DataSourceID="ZdrojDatKategorie"
            DataTextField="KategorieNazev" DataValueField="IDKategorie" EnableViewState="true">
        </asp:DropDownList><br />
        <br />
        
        <asp:SqlDataSource ID="ZdrojDatProdukty" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
            SelectCommand="SELECT [IDProdukt], [Nazev], [Format], [Cena] FROM [Produkt] WHERE ([IDKategorie] = @IDKategorie)" EnableViewState="true">
            <SelectParameters>
                <asp:ControlParameter ControlID="ddlKategorie" Name="IDKategorie" PropertyName="SelectedValue"
                    Type="Int32" />
            </SelectParameters>
        </asp:SqlDataSource>
    <asp:GridView id="ProduktGrid" DataSourceID="ZdrojDatProdukty" Runat="Server"
    AutoGenerateColumns="False"
    HeaderStyle-BackColor="#707070"
    HeaderStyle-ForeColor="#FFFFFF" AllowPaging="True" AllowSorting="True" PageSize="5" CssClass="GridView" EnableViewState="false">
    <RowStyle CssClass="GridView0" />
    <AlternatingRowStyle CssClass="GridView1" />
  <Columns>
	
  <asp:BoundField
    DataField="IDProdukt"
    HeaderText="Č&#237;slo"/>
	
  <asp:BoundField
    DataField="Nazev"
    HeaderText="N&#225;zev"/>

  <asp:BoundField
    DataField="Format"
    HeaderText="Velikost r&#225;mečku"/>

  <asp:BoundField
    DataField="Cena"
    HeaderText="Cena v Kč"/>
    
    
  <asp:ImageField
    HeaderText="Uk&#225;zka"
    DataImageUrlField="IDProdukt"
    DataImageUrlFormatString="Images/{0}.jpg"
    DataAlternateTextField="IDProdukt"
    DataAlternateTextFormatString="Uk&#225;zka {0}"/>
      <asp:HyperLinkField DataNavigateUrlFields="IDProdukt" DataNavigateUrlFormatString="produkt.aspx?Cislo={0}"
          Target="_self" Text="Detaily..." />
	
  </Columns>
        <HeaderStyle BackColor="#707070" ForeColor="White" />
        <PagerSettings Mode="NextPreviousFirstLast" />

</asp:GridView>
        
        
        
        
    
    </asp:Content>

Na samostatné stránce opravdu vše funguje, když content zobrazím přes MasterPage a změním položku v DDL aplikace vrací chybu. Nevím zda se po postbacku nemění nějak ID u ovládacích prvků...jsem skutečně začátečník...díky za pomoc.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak zkuste postupně odebírat komponenty ze stránky ať víme, čím to je.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Chybu se mi podařilo částečně vyřešit - ačkoliv nejčistší to zřejmě není. Na jednom zahraničním serveru řešili podobný problém a radili jako rychlé řešení nastavit property formuláře Master Page na EnableViewState="false". Kupodivu to opravdu začalo fungovat. Nic jiného zatím nepomohlo, dokonce jsem snad někde četl, že by mohlo jít o skrytý bug celého frameworku...Moc zdravím a díky za váš čas.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback