在updatepanel刷新上从asp.net codebehind更改javascript变量

本文关键字:codebehind 更改 javascript 变量 net asp updatepanel 刷新 | 更新日期: 2023-09-27 18:12:09

我有一些JSON生成在我的asp.net后台代码。最初,这些数据存储在Page属性字符串中,并在javascript中像这样访问:

var myjson = '<%= PageProperty %>'

然而,在updatepanel的回发时,属性被更新,但先前的值保留在javascript变量中。

我最终做的是将json分配给隐藏的asp:TextBoxText属性,然后在javascript中检索,如下所示:

ASP标记:

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

Javascript:

var myjson = $('#<%= jsonData.ClientID %>').val();

这看起来很乱(注意:为了简单起见,删除了15个这样的字段)。

是否有更好的方法来做到这一点(没有15 ajax调用)?

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

在updatepanel刷新上从asp.net codebehind更改javascript变量

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

在UpdatePanel中从用户控件注入javascript

ASP。. NET将javascript注入到嵌套在更新面板中的用户控件

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

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

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