【问题标题】:How to pass a string from asp.net code behind to local web storage?如何将字符串从 asp.net 代码传递到本地 Web 存储?
【发布时间】:2014-07-03 17:32:20
【问题描述】:

如何使用 javascript 将字符串从代码隐藏 c# 传递到本地存储?

我试图通过 HiddenField 和 Session 缓存传递字符串,但我没有成功通过在 javascript 中检索字符串以将其存储在本地存储中。 我在 c# 中有一个 onclick 函数来接收字符串并将其写入会话缓存中。之后,我尝试通过 js 中的函数检索字符串,在该函数中读取会话缓存并将其写入本地存储。但结果总是空的,除了一些测试,我用静态字符串填充页面加载函数中的会话缓存。

有人怀疑我的解决方案中的问题吗?

非常感谢您的意见。

编辑:

首先我按下按钮“btn1”将myString写入HF,然后“btn2”在JS中读取并将其存储在本地存储中。

HTML 代码

<asp:HiddenField ID="hiddenVar" runat="server" ClientIDMode="Static" />

<asp:Button ID="btn1" runat="server" OnClick="writeInHiddenField" />
<asp:Button ID="btn2" runat="server" OnClientClick="writeHfInLS()" />

<script>
  function writeHfInLS() { window.localStorage.setItem('key', document.getElementById("hiddenVar").value); }
</script>

C# 代码中的函数

writeInHiddenField() { hiddenVar.Value = myString; }

【问题讨论】:

  • 你尝试了什么?你得到什么错误?
  • 我用一些代码扩展了我的问题。没有错误,但是我在JS中调用document.getElementById("hiddenVar").value的时候,值显然是设置回了初始值。就像网站重新加载或者我在两个不同的命名空间中工作或类似的东西。
  • 好的,我将 asp:Buttons 移出 UpdatePanel,现在它可以工作了。

标签: c# javascript asp.net local-storage code-behind


【解决方案1】:

隐藏字段将起作用。假设 web 表单,使用 asp:Hidden 字段:

<asp:HiddenField ID="LocalStore" runat="server" ClientIDMode="Static" />

然后,您可以通过以下方式检索它:

document.getElementById("LocalStore").value

或 JQuery:

$("#LocalStore").val();

【讨论】:

  • 好的,但是我在JS中调用document.getElementById("hiddenVar").value的时候,值显然是设置回了初始值。就像网站重新加载或者我在两个不同的名称空间或类似的东西中工作一样。 (我用一些代码扩展了我的问题)
  • 好的,第一次设置值的代码在哪里?可能是在 Page Load 事件中,所以你在设置之前有 Not Page.IsPostBack 检查吗?
  • 该值仅在 c# 函数中设置 (writeInHiddenField() { hiddenVar.Value = myString; })
  • 您是否在页面或父控件上禁用了视图状态?我已经毫无问题地完成了这种方法。另外我通过“它总是重置为原始值”,您是通过查看呈现的 HTML 并查看原始值来验证这一点,还是通过进入本地商店的内容来验证?
  • 我没有禁用视图状态。我通过在 IE 和 VS 中调试页面进行了验证。在 c#-function 中,我看到设置正确的值,但之后我用“调试器”调用 JS 函数,它是空的“”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多