J'essaie d'accéder à l'état d'affichage du côté client mais à l'exception suivante à venir:
JAVASCRIPT:
<script language="javascript" type="text/javascript">
var vCode = '<%=ViewState("code")%>';
alert(dateView);
</script>
CODE DERRIÈRE:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
ViewState("code") = "EE"
End Sub
Quelqu'un me suggère comment le faire?
Je suggère d'utiliser RegisterHiddenField plutôt que de mélanger les codes serveur/js:
Vous pouvez essayer cet exemple:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
ViewState("code") = "EE"
Page.ClientScript.RegisterHiddenField("vCode", ViewState("code"))
End Sub
Sur votre javascript:
var vCode = document.getElementById("vCode");
alert(vCode);
Vous pouvez simplement accéder à l'élément de formulaire caché qui contient l'état d'affichage.
Le nom du contrôle est __viewstate
.
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="..." />
var vCode = documents.forms[0]['__VIEWSTATE'].Value;
alert(dateView);
Bien sûr, cela vous donnera l'état de vue crypté/encodé/compressé.
Si vous souhaitez en obtenir des valeurs spécifiques, il peut être préférable de les enregistrer dans des champs masqués et d'y accéder.
Le Page.ClientScript.RegisterHiddenField n'a pas fonctionné pour moi et a renvoyé null. Vous pouvez faire comme ça:
1-First solution: définissez un champ caché et assurez-vous de définir runat = server
<input type="hidden" id="myhiddenField" runat="server" value="" />
puis dans votre code, attribuez la valeur que vous souhaitez
myhiddenField.Value= ViewState["name"].ToString();// or assign any value you want
dans votre javascript, accédez-y comme ceci:
<script type="text/javascript">
function test()
{
var name = document.getElementById('myhiddenField').value;
alert(name)
}
</script>
solution en 2 secondes
Dans le cas où, pour certaines raisons, vous ne souhaitez pas avoir de contrôle d'entrée du serveur, vous pouvez mettre le champ masqué dans une balise littérale
<asp:literal id="literal1" runat="server"><input type="hidden" id="myhiddenField" value="{0}"/></asp:literal>
puis attribuer une valeur au littéral dans codebehind comme celui-ci
literal1.Text = string.Format(literal1.Text, "somevalue"); // somevlue can be your ViewState value
puis accédez-y en javascript comme d'habitude
var name = document.getElementById('myhiddenField').value;
alert(name)
Remarque: si vous utilisez des panneaux de mise à jour, placez les champs cachés dans la balise contenttemplate du panneau de mise à jour