【问题标题】:How could the following code be written in Javascript?下面的代码如何用 Javascript 编写?
【发布时间】:2014-01-07 08:59:31
【问题描述】:

如何用 Javascript 编写以下代码?我希望声明一个可以在任何页面中访问的变量。我可以在剃刀代码中声明一个变量,但我不知道如何在 javascript 中编写它。是否可以在javascript中声明这样的变量?

@{

 App.VariableName = "some string values";
}

【问题讨论】:

  • 你不能,这很简单,因为 javascript 中没有状态概念(在浏览器环境中)
  • 想到 Cookie 和本地存储
  • 你可以把它放在你所有页面上的脚本中。
  • @adeneo 可以通过使用母版并声明此变量来完成,该变量可用于针对该母版页的每个页面。
  • @cubitouch - 这将依赖 .ASP 母版页,而不是 javascript,来保持状态。

标签: javascript variables razor


【解决方案1】:

我希望声明一个可以在任何页面中访问的变量。

如果您的意思是,您的站点/应用程序中的任何页面,您可以使用web storage:如果值应该在会话之间保持不变,则使用本地存储,否则,则使用会话存储。

如果你只想存储一个字符串,那很简单:

// Setting the string, whenever you want to remember it
localStorage.variableName = "some string";

// Getting the string, probably on page load
var theString = localStorage.variableName;
// `theString` will be `null` if `variableName` didn't exist in storage
// for this site

这些仅限于字符串,因此人们通常将它们与 JSON 结合使用。页面加载时:

var storedStuff = JSON.parse(localStorage.myStuff || "null") || {
    // Default values here for when we don't have stored stuff yet
    variableName: "some stuff"
};

然后,每当您更改 storedStuff.variableName(或您想要保存该更改时):

localStorage.myStuff = JSON.stringify(storedStuff);

对于会话存储,只需将上面的 localStorage 更改为 sessionStorage


成语

var storedStuff = JSON.parse(localStorage.myStuff || "null") || {
    // Default values here for when we don't have stored stuff yet
    variableName: "some stuff"
};

也许可以用一些解释:

  1. 如果我们尝试检索本地存储中不存在的内容,我们会返回 null。 JavaScript 有一个curiously-powerful || operator:它不是返回一个布尔值,而是如果该参数为真则返回左侧参数,否则返回其右侧参数。所以localStorage.myStuff || "null" 将是来自本地存储的字符串,或者如果没有,则为字符串"null"

  2. 然后我们解析结果,它要么是我们之前存储的序列化数组,要么是字符串"null"。尽管字符串 "null" 不是有效的 JSON 文档,但它有效的 JSON 片段,并且JSON.parse 被记录为接受片段。所以解析的结果要么是我们之前存储的数组,要么是null

  3. 然后我们再次使用强大的 || 运算符在反序列化结果和具有我们默认值的对象之间进行选择 ({...})。因此,如果我们反序列化null,我们将选择具有默认值的对象;如果我们反序列化一个对象,我们会选择它。

【讨论】:

  • 请问我该怎么做?有没有我可以参考的示例代码?多谢! :) 我的意思是声明一个可以在我的站点/应用程序的任何页面中访问的变量
  • 谢谢你!我觉得我得花点时间消化一下~:)
  • @user3156931:我添加了一个简单的字符串示例,因为您刚才说您想要一个字符串。我有点用 JSON 去 OTT... :-)
  • 那么,如果我想在 razor 中检索 localstorage 变量呢?
  • @user3156931 这不是你的问题。为此,您只需通过 ajax 或直接 http 请求从图像中提交 ID。
【解决方案2】:

如果您的浏览器支持它,您可以使用 localStorage 或 sessionStorage 来存储页面之间的变量 - 有关详细信息和兼容性表,请参阅 https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Storage

可以这样使用:

localStorage["mydata"] = myvariable;
var dataFromStorage = localStorage["mydata"];

本地存储将在您关闭浏览器后保留数据,会话存储将仅持续该浏览器会话。

【讨论】:

  • 我可以知道如何访问 razor 中的 localStorage 吗?
猜你喜欢
  • 2014-04-05
  • 1970-01-01
  • 1970-01-01
  • 2021-10-19
  • 2015-03-24
  • 2011-10-15
  • 1970-01-01
  • 1970-01-01
  • 2013-08-23
相关资源
最近更新 更多