Probléme avec ViewState, ASP Javascript

Signaler
Messages postés
23
Date d'inscription
lundi 8 octobre 2007
Statut
Membre
Dernière intervention
1 avril 2009
-
Messages postés
1
Date d'inscription
dimanche 7 juin 2009
Statut
Membre
Dernière intervention
23 mars 2010
-
Salut,
 j'ai un bon probléme en ASP.
En fait je dois faire passer un paramétre dans un autre page sans que celui ci sois visible dans l'url.Donc j'ai un lien et quand je clique sur ce lien je fais passer une variable avec une valeur et dans la page d'aprés je récupére cette variable et j'affiche fonction.
Pour ce faire je fait un OnClick sur mon lien qui affiche la valeur du parametre dans un champ hidden et qui submit a la page ou je dois afficher le tout. Il faut que je récupére cette variable et le tour est joué.
Cependant j'ai une énorme erreur lors du submit() :

Échec de la validation MAC Viewstate. Si cette application
est hébergée par une batterie de serveurs ou un cluster, assurez-vous
que la configuration <machineKey> spécifie le même validationKey
et le même algorithme de validation. AutoGenerate ne peut pas être
utilisée dans un cluster.

Ci dessous mon code au niveau HTML :
Informatique - Telecom - Electronique

function remplir () {
  document.Form1.HiddenSecteur.value = 1;
  Form1.action = 'offre_secteur_activite.aspx'
  Form1.submit()
 }
C'est le champ hiddensecteur que je dois récupérer sur l'autre page

J'ai regarder un peu au niveau du viewstate mais j'ai rien trouvé qui puisse m'éclairer. Ou me guider parce que je ne sais pas vers ou chercher!
Merci d'avance pour votre aide
A voir également:

8 réponses

Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
20
Bonsoir,

on peut pas faire ca comme ca en asp.net, au pire si tu veux faire ça utilises le crosspagepostback. Généralement on utilise une variable Session pour ce genre de transfert.

<hr />Cyril - MSP - MCPD ASP.net & MCTS SQL - Consultant indépendant
Messages postés
64
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
10 mai 2012

Bonsoir.
moi aussi j'ai essayer un petit exemple,juste pour submitter mon formulaire avec une fonction:
function remplir () {
  Form1.action = 'offre_secteur_activite.aspx'
  Form1.submit()
 }
et ca genere la meme erreur.
et malheuresement j'ai rien trouvé la dessus.

Mettez du .net dans vootre vie
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
20
Bonjour,

c'est normal,

tu envoies le viewstate de la page1 vers la page2. La page2 va s'apercevoir que c'est pas elle qui a généré ce viewstate elle va donc décidé de faire une erreur plutot qu'autoriser une hypotétique attaque. Pour outrepasser ce comportement tu peux te servir de la propriété enableviewstatemac="false"

<hr />Cyril - MSP - MCPD ASP.net & MCTS SQL - Consultant indépendant
Messages postés
64
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
10 mai 2012

Rebonjour,


et merci pour votre reactivité, c'est deja fait.

Mettez du .net dans vootre vie
Messages postés
6
Date d'inscription
vendredi 26 mars 2004
Statut
Membre
Dernière intervention
4 janvier 2010

Bonjour,

J'ai un soucis avec view state: j'ai une GridView que je rempli dynamiquement, mon gridview peut afficher plusieurs tables selon le choix de l'utilisateur. Pour faire un sort sur mes colonnes qui sont aussi générées automatiquement j'ai créer une fonction, jusqu'à là tout va bien, or le sort que je fait est en "ASC", je veux pouvoir changer de direction du sort si on clique une deuxème fois sur la colonne concernée, pour cela j'ai créé un viewstate : viewstate("direction") = "ASC"
après lors du clique sur le champ en question j'utilise un select case: si viewstate("direction") "ASC" alors viewstate("direction") "DESC" et si viewstate("direction") = "DESC" alors viewstate("direction") = "ASC"

Or j'ai toujours "ASC" comme valeur de viewstate("direction")! Quelqu'un peut m'aider svp?

un peux de code pour mieux comprendre:

    Private Property GridViewSortDirection() As String
        Get
            Return IIf(ViewState("SortDirection") = Nothing, "ASC", ViewState("SortDirection"))
        End Get

        Set(ByVal value As String)
            Session("SortDirection") = value
        End Set
    End Property

    Private Function GetSortDirection() As String
        Select Case GridViewSortDirection
            Case "ASC"
                GridViewSortDirection = "DESC"
            Case "DESC"
                GridViewSortDirection = "ASC"
        End Select
        Return GridViewSortDirection
    End Function

    Protected Sub GridView2_Sorting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewSortEventArgs) Handles GvTable.Sorting
        Label1.Text = GetSortDirection() 'Retourne toujours "ASC"
    End Sub


Merci pour votre aide.
Jarmoud
Messages postés
64
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
10 mai 2012

Bonjour 'cest normal d'avoir ce probleme ,parceque dans l'ecriture tu utilises "ViewState("SortDirection")" et dans la lecture tu lis la valeur de la session "Session("SortDirection")" donc ce sont 2 variables differentes .

il faut utiliser "ViewState("SortDirection")=valeur" dans le setter ,comme ceci:

Private Property GridViewSortDirection() As String
Get
Return IIf(ViewState("SortDirection") = Nothing, "ASC", ViewState("SortDirection"))
End Get

Set(ByVal value As String)
ViewState("SortDirection") = value
End Set
End Property




Mettez du .net dans vootre vie
Messages postés
6
Date d'inscription
vendredi 26 mars 2004
Statut
Membre
Dernière intervention
4 janvier 2010

Bonjour hicham et merci pour la réponse, excusez moi pour la faute mais j'utilise bien un viewstate en lecture et en écriture, en fait j'ai remarqué que ma fonction GetSortDirection() fonctionne bien quand je l'exécute à partir d'un bouton:
    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        btntext.Text = GetSortDirection()
    End Sub


Mais pas qu'on je l'utilise dans mon GridView:
Protected Sub GridView2_Sorting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewSortEventArgs) Handles GvTable.Sorting
        btntext.Text = GetSortDirection()
End Sub


Une idée?

Jarmoud
Messages postés
1
Date d'inscription
dimanche 7 juin 2009
Statut
Membre
Dernière intervention
23 mars 2010

Est-ce que quelqu'un a une idée pourquoi StateView retourne Nothing (après un aller/retour) dans le code behind suivant?
Merci.


<form id="form1" runat="server">


HyperLink


</form>


Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim info As String = Request("param")
If (IsNothing(info)) Then
ViewState("nouvelleUrl") = _
Request.ServerVariables("URL").ToString() & "?param=toto"
End If
HyperLink1.NavigateUrl = CStr(ViewState("nouvelleUrl"))
End Sub