Probléme avec ViewState, ASP Javascript

rom268 Messages postés 23 Date d'inscription lundi 8 octobre 2007 Statut Membre Dernière intervention 1 avril 2009 - 26 oct. 2007 à 12:59
junkmerde Messages postés 1 Date d'inscription dimanche 7 juin 2009 Statut Membre Dernière intervention 23 mars 2010 - 23 mars 2010 à 10:30
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

8 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
27 oct. 2007 à 23:47
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
0
hichamveo Messages postés 64 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 10 mai 2012
14 mars 2008 à 19:05
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
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
14 mars 2008 à 20:19
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
0
hichamveo Messages postés 64 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 10 mai 2012
15 mars 2008 à 18:12
Rebonjour,


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

Mettez du .net dans vootre vie
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jarmoud Messages postés 6 Date d'inscription vendredi 26 mars 2004 Statut Membre Dernière intervention 4 janvier 2010
4 janv. 2010 à 11:26
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
0
hichamveo Messages postés 64 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 10 mai 2012
4 janv. 2010 à 12:18
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
0
jarmoud Messages postés 6 Date d'inscription vendredi 26 mars 2004 Statut Membre Dernière intervention 4 janvier 2010
4 janv. 2010 à 14:06
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
0
junkmerde Messages postés 1 Date d'inscription dimanche 7 juin 2009 Statut Membre Dernière intervention 23 mars 2010
23 mars 2010 à 10:30
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
0
Rejoignez-nous