为什么javascript变量I';我通过C#创建,只更新一次?

为什么javascript变量I';我通过C#创建,只更新一次?,c#,.net,javascript,C#,.net,Javascript,在我为ASP.Net应用程序编写的C#代码中,我设置了一个变量,然后我想设置一个等于它的Javascript变量,以便在客户端使用它。这个C#变量是在事件处理程序中设置的,并且经常更改 所以,我的事件处理程序只做这个 int scale = (int)myObject.Scale; Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "JSVariables", "scale=" + scale, true); 然后,在我

在我为ASP.Net应用程序编写的C#代码中,我设置了一个变量,然后我想设置一个等于它的Javascript变量,以便在客户端使用它。这个C#变量是在事件处理程序中设置的,并且经常更改

所以,我的事件处理程序只做这个

int scale = (int)myObject.Scale;
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "JSVariables", "scale=" + scale, true);  
然后,在我的JS中,我有一个事件处理程序,它只是提醒这个值

alert(scale);
问题是,仅在第一次触发事件时才设置缩放值。每次引发事件时,我都可以单步查看我的C代码,并看到调用了RegisterClientScriptBlock,并且scale实际上得到了不同的值


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

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


这样做的目的是消除重复的共享脚本。如果您的五个控件都依赖于共享JavaScript包含,那么您只希望在页面上包含一次。因此,所有控件都可以调用相同的include函数和键,并确保它不会被多次包含。

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


这样做的目的是消除重复的共享脚本。如果您的五个控件都依赖于共享JavaScript包含,那么您只希望在页面上包含一次。因此,所有控件都可以调用相同的include函数和键,并确保不会多次包含该函数和键。

除了Rex所说的,如果您使用的是ASP.NET Ajax,如果要在部分回发之间更新这些值,则需要使用ScriptManager上的RegisterClientScript方法,除了Rex所说的,如果您使用的是ASP.NET Ajax,如果您想在部分回发之间更新这些值,您需要使用ScriptManager上的RegisterClientScript方法,这听起来确实像您正在做的