gpt4 book ai didi

c# - 为什么我通过 C# 创建的这个 javascript 变量只更新一次?

转载 作者:行者123 更新时间:2023-11-30 23:53:35 25 4
gpt4 key购买 nike

在 ASP.Net 应用程序的 C# 代码隐藏中,我设置了一个变量,然后我想设置一个与其相等的 Javascript 变量,以便我可以在客户端对其进行一些处理。这个 C# 变量是在事件处理程序中设置的,并且它的变化相当频繁。

所以,我的事件处理程序只执行此操作...

int scale = (int)myObject.Scale;
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "JSVariables", "scale=" + scale, true);

然后我在 JS 中让事件处理程序简单地警告该值。

alert(scale);

问题是比例值仅在第一次触发事件时设置。每次引发事件时,我都可以单步执行 C# 代码,并看到 RegisterClientScriptBlock 被调用,并且该比例实际上获得了不同的值。

如何使该值不恒定?每次达到 RegisterClientScriptBlock 行时,都应该将一个新值加载到我的 JS 比例变量中,但它只是保持最初的状态。有什么想法吗?

最佳答案

RegisterClientScriptBlock 通过类型 (this.GetType()) 和键 ("JSVariables") 注册您的脚本。下次在同一执行堆栈中调用 RegisterClientScriptBlock 时,它将检查是否已注册该类型和键的脚本,如果已注册,则不会执行任何操作。

这样做的目的是消除重复的共享脚本。如果您的五个控件都依赖于共享的 JavaScript 包含,则您只想将其包含在页面上一次。这样所有的控件都可以调用相同的include函数和key,并保证不会被多次包含。

关于c# - 为什么我通过 C# 创建的这个 javascript 变量只更新一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/644874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com