在updatepanel refresh上更改来自asp.net codebehind的javascript变量

时间:2014-07-08 10:59:53

标签: c# javascript asp.net

我的asp.net代码隐藏中生成了一些JSON。最初,这些数据存储在Page属性字符串中,并在javascript中访问,如下所示:

var myjson = '<%= PageProperty %>'

但是,在updatepanel的回发中,属性会更新,但之前的值会保留在javascript变量中。

我最终做的是将json分配给隐藏Text的{​​{1}}属性,然后在javascript中检索它,如下所示:

ASP加价:

asp:TextBox

使用Javascript:

<asp:TextBox ID="jsonData" runat="server" Text="" style="display: none" />

这看起来很混乱(注意:为简单起见,这些字段中有15个被删除)。

有没有更好的方法(没有15个ajax调用)?

为什么在回发后没有获取更新的页面属性?

1 个答案:

答案 0 :(得分:0)

您可以使用它直接从代码后面注入JavaScript脚本:

Injecting javascript from a user control inside an UpdatePanel

ASP.NET inject javascript in user control nested in update panel

注入脚本的代码应该更新变量。

你可以尝试一个肮脏的技巧:添加一个带有代码的<script>标签来更新客户端的javascript变量。将它放在更新面板HTML的底部。当HTML在浏览器中呈现时,脚本将运行。

如果您坚持隐藏的归档技巧,您可以将15个值序列化为JSON,并存储序列化值。然后,您可以使用javascript在客户端反序列化JSON。在服务器端使用JSON.NET。在客户端使用javascript函数JSON.parse("serialized values")