Pergunta

Eu tenho uma página de login que armazena alguns valores em localStorage (html5) e depois continua em uma página VB.Net.Estou procurando um método em VB que possa ler esses valores armazenados e torná-los vars VB.Alguma ideia?

Foi útil?

Solução

O code-behind VB.NET está sendo executado no servidor e não tem acesso direto à API de armazenamento local do navegador.

Você pode, no entanto, preencher facilmente alguns campos ocultos na página de login, usando JavaScript, que serão postados no envio e podem ser lidos no code-behind da página .NET.

Algo assim (não testado):

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

Na página .NET o valor pode ser lido como:

Request.Form("HIDDEN_FIELD_ID")

(Existem outras maneiras, mas esta é fácil de entender.)

Esteja ciente de que os dados de login no localStorage podem ser acessados ​​(e modificados) pelo usuário, portanto, certifique-se de não criar um risco de segurança.

Outras dicas

Esta amostra usa o conceito acima com código VB:

Aqui está o elemento corporal 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>

Aqui está o evento de carregamento da página:

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

Agora, seu código por trás tem o valor do localStorage disponível.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top