2010-12-14 10 views
2

Im travaillant avec le cadre asp.net 4.0 et j'ai ce code:ASPX soumettre le formulaire erreur

form id = "form1" runat = méthode "serveur" = "get" action = "Profile.aspx"

// some code 

asp: bouton runat = "server" ID = "submitButton" Text = "soumettre"

Chaque fois que je clique sur le bouton envoyer je reçois cette erreur:

validation des viewstate MAC a échoué. Si cette application est hébergée par une batterie ou un cluster Web, assurez-vous que la configuration spécifie le même algorithme de validation et de validation. AutoGenerate ne peut pas être utilisé dans un cluster.

une idée de comment y remédier ???

+0

L'exécutez-vous dans une batterie de serveurs Web ou un cluster? – Oded

+0

Y a-t-il des conditions préalables mentionnées ici http://blogs.msdn.com/b/tom/archive/2008/03/14/validation-of-viewstate-mac-failed-error.aspx rencontré? – SWeko

+0

@Oded .. non @Sweko: j'ai vérifié le lien avant et il n'a pas m'aider – Grace

Répondre

2

Ceci est dû à un POST inter-pages (c'est-à-dire que vous soumettez ViewState de la première page à la seconde). Vous pouvez ajouter PostBackUrl au bouton comme ceci:

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

Sinon, vous pouvez gérer l'événement clic du bouton dans la première page, déplacer une partie de la logique dans ce gestionnaire et faire un Response.Redirect (c.-à-GET demande) à la deuxième page. La bonne solution dépend de votre cas particulier.

+0

Je viens de créer un javascript et créé un nouveau formulaire .. et j'ai soumis la nouvelle forme .. il a travaillé ... ill essayer maintenant le postbackurl. .. – Grace

1

Si vous souhaitez renvoyer l'article à votre page actuelle, supprimez les attributs de méthode de formulaire tag = "get" action = "Profile.aspx". Et gérer les données post-codebehind de votre page.

Si vous souhaitez envoyer des données vous une autre page comme Profile.aspx, utilisez l'attribut PostBackUrl du contrôle de bouton, comme Stilgar a écrit pour vous. Et puis dans Profile.aspx codebehind pour obtenir l'accès au contrôle de votre utilisation page en cours somethink comme ceci:

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

espère que ce sera utile pour vous!

Cordialement, Dima.

Questions connexes