Question

J'ai une page de connexion qui stocke quelques valeurs à localStorage (html5) continue alors à une page VB.Net. Je suis à la recherche d'une méthode en VB qui peut relire les valeurs stockées et les rendre VB vars. Toutes les idées?

Était-ce utile?

La solution

Le VB.NET code-behind est en cours d'exécution sur le serveur et n'a pas un accès direct à l'API de stockage local du navigateur.

Vous pouvez cependant facilement remplir certains champs cachés sur la page de connexion, en utilisant JavaScript, qui sera affiché sur soumettre et peut être lu à partir du code-behind de la page .NET.

Quelque chose comme ça (non testé):

this.document.getElementById("HIDDEN_FIELD_ID").value = localStorage.STORED_VALUE;
...
<input type="hidden" id="HIDDEN_FIELD_ID" />
...

Sur la page .NET la valeur peut être lu comme:

Request.Form("HIDDEN_FIELD_ID")

(Il existe d'autres moyens, mais celui-ci est facile à saisir.)

Sachez que les données de connexion à localStorage sont accessibles (et modifiés) par l'utilisateur, alors assurez-vous ne créez pas un risque de sécurité.

Autres conseils

Cet exemple utilise le concept ci-dessus avec le code VB:

Voici l'élément du corps html:

<body>
<form id="form1" runat="server">
<asp:HiddenField ID="hfLoaded" runat="server" />
<asp:HiddenField ID="hfLocalStorage" runat="server" />
</form>
<script type="text/javascript">
    // Load LocalStorage
    localStorage.setItem('strData', 'Local storage string to put into code behind');


    function sendLocalStorageDataToServer()
    {
        // This function puts the localStorage value in the hidden field and submits the form to the server.
        document.getElementById('<%=hfLocalStorage.ClientID%>').value = localStorage.getItem('strData');
        document.getElementById('<%=form1.ClientID%>').submit();
    }

    // This checks to see if the code behind has received the value. If not, calls the function above.
    if (document.getElementById('<%=hfLoaded.ClientID%>').value != 'Loaded')
        sendLocalStorageDataToServer();
</script>

Voici l'événement de chargement de page:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Dim s As String
    s = hfLocalStorage.Value

    'This next line prevents the javascript from submitting the form again.
    hfLoaded.Value = "Loaded"
End Sub

Maintenant, votre code a derrière la valeur localStorage à sa disposition.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top