Momentálne ste offline a čaká sa, kým sa znova pripojíte na internet

Váš prehliadač nie je podporovaný

Ak chcete lokalitu používať, aktualizujte svoj prehliadač.

Aktualizovať na najnovšiu verziu Internet Explorera

PRB: "stav zobrazenia je neplatný" chybové hlásenie pri použití Server.Transfer

DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.

Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem:316920
Upozornenie na neaktuálny obsah článku databázy KB
Tento článok obsahuje informácie o produktoch, pre ktoré spoločnosť Microsoft už neposkytuje technickú podporu. Z tohto dôvodu je tento článok publikovaný ako nezmenený a už nebude aktualizovaný.
PRIZNAKY
Ak používate HttpServerUtility.Transfer ("stránka meno", TRUE), zobrazí nasledujúce chybové hlásenie:
Stav zobrazenia je neplatná pre túto stránku a môže byť poškodený
PRICINA
Tento problém sa vyskytuje, pretože EnableViewStateMac atribút <pages></pages> prvok je nastavený na pravda v predvolenom nastavení. Ak je nastavené tento atribút pravdaASP.NET beží správy overovania kontrola (MAC) na zobrazenie stav stránky, stránky sa pri zaúčtovaní späť od klienta. Táto kontrola Určuje, ak stav zobrazenia stránky bol upravený na klientovi. Pre bezpečnostné účely, odporúča sa ponechať si tento atribút nastavený na pravda.

Keď zavoláte Server.transfer metóda a nastavte druhý parameter pravda, môžete zachovať Reťazca dopytu a Formulár zbierky. Jedným z polí formulára je skryté __VIEWSTATE pole formulára, ktoré vlastní štát zobrazenie stránky. Zobrazenie štátnej správy overenie skontrolovať zlyhá, pretože overovanie správ kontrolovať iba kontroly každú stranu. Preto stav zobrazenia zo stránky, ktorú si vyžaduje Server.transfer nie je platná na stránke určenia.

Zobraziť stav je stránka scoped a je platný pre túto stránku iba. Zobrazenie štátu by sa nemali prevedené celej stránky.
RIESENIE
Ak chcete vyriešiť tento problém, použite jednu z nasledujúcich metód.

Rezolúcia 1

Prenos hodnôt medzi stránky prejsť váš server kontrolných hodnôt na iné stránky. Ďalšie informácie nájdete na nasledujúcich MSDN dokumentácia:
Absolvovanie Server kontrolných hodnôt medzi stránky
http://msdn2.Microsoft.com/en-us/library/6c3yckfw (vs.71) .aspx
To si vyžaduje, že vytvárate verejných vlastnosti pre každú vlastnosť kontroly, ktoré chcete prístup z určenia stránku.

Ak máte veľa kontroly, a ak chcete prístup k vlastnosti týchto Ovládacie prvky z inej stránky, môžete tiež deklarovať týchto ovládacích prvkov ako verejné premenné. Napríklad:

Page1.aspx
Public Class Page1    Public WithEvents TextBox1 As System.Web.UI.WebControls.TextBox    'Insert your code here.End Class				
Page2.aspx
            Dim sourcePage As Page1            sourcePage = CType(Context.Handler, WebForm1)            Response.Write(sourcePage.TextBox1.Text)				

Rezolúcia 2

Nedopadlo druhý parameter, (čo je FALSE v predvolenom nastavení) keď zavoláte Server.transfer. Napríklad:
Server.Transfer("<page name>")				
Tento kód neposiela Reťazca dopytu a Formulár polia na stránku, ktorá sa nazýva. Keď je prevedené žiadne údaje, ASP.NET nespustí kontrola overovania správ.
DALSIE INFORMACIE

Kroky na reprodukovanie správanie

  1. Vytvoriť .aspx stránku s názvom WebForm1.aspx, ktorý prevádza vykonanie na inú stránku. Do WebForm1.aspx, pridajte nasledujúci kód:
    <%@ Page language="vb" AutoEventWireup="true" %><html>    <body>	    <form id="WebForm1" method="post" runat="server">      <asp:TextBox id="txtName" runat="server">Your Name</asp:TextBox><br>      <asp:Button id="Button1" runat="server" Text="Submit" OnClick="Button1_Click"></asp:Button>    </form>	  </body></html><script runat=server>Sub Button1_Click(sender As Object, e As System.EventArgs)	Server.Transfer("WebForm2.aspx",true)End Sub</script>					
  2. Vytvoriť inú .aspx stránku s názvom WebForm2.aspx a potom pridať nasledujúci kód:
    <%@ Page language="vb" AutoEventWireup="true" %><html>  <body>	    <form id="WebForm2" method="post" runat="server">      <asp:Label id="lblName" runat="server" >Web Form 2</asp:Label>    </form>	  </body></html><script runat=server>Sub Page_Load(sender As Object, e As EventArgs)Dim thisPage As System.Web.UI.PageDim nameTextBox As TextBox	thisPage = CType(Context.Handler, System.Web.UI.Page)	nameTextBox =  CType(thisPage.FindControl("txtName"), System.Web.UI.Control)	lblName.Text = "Your name is '" & nameTextBox.Text & "'."		End Sub</script>					
  3. Otvorte WebForm1.aspx vo vašom prehliadači a potom kliknite na tlačidlo Predložiť.
Safari View

Upozornenie: Tento článok bol preložený automaticky.

Vlastnosti

ID článku: 316920 – Posledná kontrola: 11/08/2011 10:46:00 – Revízia: 2.0

  • Microsoft ASP.NET 1.0
  • kbprb kbstate kbwebforms kbmt KB316920 KbMtsk
Pripomienky
c1.microsoft.com/c.gif?DI=4050&did=1&t=">r varAutoFirePV = 1; var varClickTracking = 1; var varCustomerTracking = 1; var Route = "76500"; var Ctrl = ""; document.write(" col) + "//c.microsoft.com/ms.js'><\/script>");