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
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.
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.
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"
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
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
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
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