VB.NETにJS LocalStorageの保存値にアクセスします
-
27-09-2019 - |
質問
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値が利用可能になりました。
所属していません StackOverflow