Accédez à la valeur stockée de localStorage dans VB.Net
-
27-09-2019 - |
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?
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.