如有疑问。是否可以在localStorage中的asp.net页面中设置变量并在另一页上检索它?
如何在asp.net中设置localStorage变量。可能吗? 之后我可以使用:
读取变量localStorage.getItem('UserID');
答案 0 :(得分:7)
我想你不能。本地存储的全部意义在于它是本地的,你只能从javascript操作它。如果您需要在服务器和客户端之间传递值您需要使用一些传输技术 - cookie,ajax调用,隐藏字段等。这将取决于您的应用程序的组织方式,存储的信息类型,数量,是否你想要重定向或不重定向,但在所有情况下都应该使用javascript来完成,因为这是访问存储在localStorage中的数据的唯一方法。
答案 1 :(得分:4)
老帖子是的,但知识总是好的。
您可以从asp.net(间接)设置本地或会话存储。由于我们可以在asp.net中设置javascript代码并插入到客户端,因此会话或本地存储没有区别。
从服务器端尝试此操作
string script = string.Format("sessionStorage.userId= '{0}';", "12345");
ClientScript.RegisterClientScriptBlock(this.GetType(), "key", script, true);
这会将会话(您可以执行本地)存储变量设置为值12345。
答案 2 :(得分:2)
我认为在页面&中设置会话变量可以在另一页的javascript中读取变量。但是,如果你正在寻找那些不会成为的本地存储。它需要javascript。对于会话变量,例如
A.aspx
<%Session ["用户名"] ="唐老鸭&#34 ;; %GT;
B.aspx
> <script type="text/javascript">
> var user = "<%= Session["username"] %>";
> document.write(user);
> </script>
答案 3 :(得分:2)
我是通过使用cookies完成的:
Default.aspx.cs代码背后:
HttpCookie userIdCookie = new HttpCookie("UserID");
userIdCookie.Value = id.ToString();
Response.Cookies.Add(userIdCookie);
Response.Redirect("~/ImagePage.html");
没有设置HttpCookie Expires。它会在会话中失效。
html page javascript:
function OnLoad() {
var userId = getCookie('UserdID');
if (userId == null)
window.location = "http://localhost:53566/Default.aspx";
}
function getCookie(cookieName) {
var cookieValue = document.cookie;
var cookieStart = cookieValue.indexOf(" " + cookieName + "=");
if (cookieStart == -1) {
cookieStart = cookieValue.indexOf("=");
}
if (cookieStart == -1) {
cookieValue = null;
}
else {
cookieStart = cookieValue.indexOf("=", cookieStart) + 1;
var cookieEnd = cookieValue.indexOf(";", cookieStart);
if (cookieEnd == -1) {
cookieEnd = cookieValue.length;
}
cookieValue = unescape(cookieValue.substring(cookieStart, cookieEnd));
}
return cookieValue;
}
答案 4 :(得分:1)
目前可以使用带有 ProtectedBrowserStorage
的 Asp.Net Core 和 Blazor 组件获得纯 C# 解决方案。
ProtectedSessionStorage
或 GetAsync<T>
注入组件SetAsync<T>
和 @using Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage
@inject ProtectedLocalStorage LocalStorage
<button @onclick="async ()=> await SaveToLocalStorageAsync()">Save</button>
@code {
private const string _localStorage = "MyLocalStorage";
private async Task SaveToLocalStorageAsync()
{
await LocalStorage.SetAsync<string>(_localStorage, "text to be saved");
}
}
方法在本地存储中存储和检索数据。任何对象类型都可以与 T 一起使用。@using Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage
@inject ProtectedLocalStorage LocalStorage
<p>@TxtFromLocalStorage</p>
@code {
private string TxtFromLocalStorage = string.Empty;
private const string _localStorage = "MyLocalStorage";
protected override async Task OnInitializedAsync()
{
var result = await LocalStorage.GetAsync<string>(_localStorage);
TxtFromLocalStorage = result.Success ? result.Value : "Can't read local storage";
}
}
int socketTimeout = 40000; // set 40 seconds timeout value
RetryPolicy policy = new DefaultRetryPolicy(socketTimeout,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
答案 5 :(得分:0)
您可以使用asp:HiddenField
在更改localstorage
或sessionStorage
后,您将隐藏字段填充并在后面的代码中使用。