我的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调用)?
为什么在回发后没有获取更新的页面属性?
答案 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")
。