是否可以在页面中设置本地存储或会话变量 asp.net 并在另一页面上的javascript中读取它

本文关键字:一页 net javascript asp 读取 设置 会话 是否 存储 变量 | 更新日期: 2023-09-27 18:36:52

有问题。是否可以在 localStorage asp.net 页面中设置变量并在另一页上检索它?

如何在 asp.net 中设置本地存储变量。可能吗?之后,我可以使用以下命令读取变量:

localStorage.getItem('UserID');

是否可以在页面中设置本地存储或会话变量 asp.net 并在另一页面上的javascript中读取它

我想你不能。本地存储的全部意义在于它是本地的,您只能从javascript操作它。如果您需要在服务器和客户端之间传递值,则需要使用一些传输技术 - cookie,ajax调用,隐藏字段等。这完全取决于您的应用程序的组织方式,存储的信息类型,其数量,是否要重定向,但在所有情况下,这都应该使用javascript完成,因为这是访问存储在localStorage中的数据的唯一方法。

旧帖子是的,但知识总是好的。

您可以从 asp.net(间接)设置本地或会话存储。由于我们可以在 asp.net 中设置javascript代码并插入到客户端,因此会话或本地存储没有区别。

从服务器端尝试一下

string script = string.Format("sessionStorage.userId= '{0}';", "12345");
ClientScript.RegisterClientScriptBlock(this.GetType(), "key", script, true);

这会将会话(您可以执行本地)存储变量设置为值 12345。

我通过使用cookie来做到这一点:

默认.aspx.cs代码隐藏:

HttpCookie userIdCookie = new HttpCookie("UserID");
userIdCookie.Value = id.ToString();
Response.Cookies.Add(userIdCookie);
Response.Redirect("~/ImagePage.html");

未设置 HttpCookie 过期。它默认过期与会话。

HTML 页面 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;
}

我认为在页面中设置会话变量并在另一个页面的javascript中设置读取变量是可能的。但是,如果您正在寻找本地存储,那就不是了。它需要javascript。对于会话变量,例如
A.aspx

<% 会话["用户名"]="唐老鸭"; %>

B.aspx

>  <script type="text/javascript">
>       var user = "<%= Session["username"] %>";
>       document.write(user);
>  </script>

您可以使用asp:HiddenField

更改localstoragesessionStorage后,填充隐藏字段并在代码隐藏中使用。

C# 解决方案目前可以使用具有ProtectedBrowserStorage Asp.Net 核心和 Blazor 组件。

  • 将 blazor 组件添加到项目
  • ProtectedLocalStorageProtectedSessionStorage注入组件
  • 使用GetAsync<T>SetAsync<T>方法存储和检索本地存储中的数据。任何对象类型都可以与 T 一起使用。
  • Blazor 组件也可以在 Razor 页面和 MVC 项目中使用。

设置本地存储组件

@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");
    }
}

读取本地存储组件

@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";
    }
}