在VB.Net中访问js localStorage存储的值

时间:2010-10-05 05:08:00

标签: vb.net html5 local-storage

我有一个登录页面,它将几个值存储到localStorage(html5),然后继续到VB.Net页面。我在VB中寻找一种方法,可以读回那些存储的值并使它们成为VB变量。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

VB.NET代码隐藏在服务器上运行,无法直接访问浏览器的本地存储API。

但是,您可以使用JavaScript轻松填写登录页面上的一些隐藏字段,这些字段将在提交时发布,并且可以从.NET页面的代码隐藏中读取。

像这样(未经测试):

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

在.NET页面上,值可以如下所示:

Request.Form("HIDDEN_FIELD_ID"

(还有其他方法,但这个很容易掌握。)

请注意,用户可以访问(和修改)localStorage中的登录数据,因此请确保您不会产生安全风险。

答案 1 :(得分:0)

此示例使用上述概念与VB代码:

这是html body元素:

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

这是页面加载事件:

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

现在您的代码后面有可用的localStorage值。