2010-12-14 19 views
2

Im mit asp.net Framework 4.0 arbeiten, und ich habe diesen Code:aspx einreichen Formfehler

form id = "Form1" runat = "server" method = "get" action = "Profile.aspx"

// some code 

asp: Button runat = "server" ID = "SubmitButton" Text = "Submit"

Jedes Mal, wenn ich den Absenden-Button klicken bekomme ich diesen Fehler:

Validierung von Viewstate-MAC. Wenn diese Anwendung von einer Webfarm oder einem Cluster gehostet wird, stellen Sie sicher, dass die Konfiguration den gleichen Validierungsschlüssel und Validierungsalgorithmus angibt. AutoGenerate kann nicht in einem Cluster verwendet werden.

eine Idee, wie es zu reparieren ???

+0

Führen Sie dies in einer Webfarm oder einem Cluster aus? – Oded

+0

Sind irgendwelche der hier genannten Voraussetzungen http://blogs.msdn.com/b/tom/archive/2008/03/14/validation-of-viewstate-mac-failed-error.aspx erfüllt? – SWeko

+0

@Oded .. nein @Sweko: ich überprüft den Link vor und es hat mir nicht geholfen – Grace

Antwort

2

Dies wird durch einen seitenübergreifenden POST verursacht (d. H., Sie übermitteln den ViewState der ersten Seite an den zweiten). Sie können PostBackUrl auf die Schaltfläche wie folgt hinzu:

<asp:Button runat="server" ID="SubmitButton" Text="Submit" PostBackUrl="~/WebForm2.aspx" /> 

Alternativ können Sie das Click-Ereignis der Schaltfläche auf der ersten Seite behandeln, in diesem Handler einen Teil der Logik bewegen und eine Response.Redirect tun (dh Anforderung GET) zur zweiten Seite. Die richtige Lösung hängt von Ihrem speziellen Fall ab.

+0

Ich habe gerade ein Javascript erstellt und ein neues Formular erstellt .. und ich reichte die neue Form ein .. es funktionierte ... krank versuchen Sie jetzt die Postbackurl. .. – Grace

1

Wenn Sie einen Beitrag zurück an Ihre aktuelle Seite senden möchten, entfernen Sie die Attribute form method = "get" action = "Profile.aspx". Und behandeln Sie im Code hinter Post-Daten von Ihrer Seite.

Wenn Sie Daten senden möchten Sie eine andere Seite wie Profile.aspx, verwenden Sie PostBackUrl Attribut der Schaltfläche Steuerelement, wie Stilgar für Sie geschrieben. Und dann in Profile.aspx Code-Behind-Zugriff auf die Steuerung von der aktuellen Seite Verwendung some wie folgt zu erhalten:

If(Page.PreviousPage != null) 
{ 
    var textBox = Page.PreviousPage.FindControl("ControlID") as TextBox; 
    if(textBox != null) 
    { 
     //Use your logic here 
    } 
} 

Hoffe, dass es für Sie hilfreich sein!

Mit freundlichen Grüßen, Dima.