質問

LocalStorage(HTML5)にいくつかの値を保存するログインページがあり、VB.NETページに続きます。私は、これらの保存された値を読み返してVB varを作ることができるVBの方法を探しています。何か案は?

役に立ちましたか?

解決

VB.NET Code-Behindはサーバーで実行されており、ブラウザのローカルストレージ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のログインデータにユーザーがアクセス(および変更)できることに注意してください。そのため、セキュリティリスクが作成されていないことを確認してください。

他のヒント

このサンプルは、上記の概念をVBコードで使用します。

これが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>

これがページロードイベントです:

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値が利用可能になりました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top