我在受保护的类中有几个C#变量,用于存储在HTML画布上单击的最后一个坐标,并且调用该方法时变量不会更改:
public partial class Default : Page {
public static int xVar {get; set;}
public static int yVar {get; set;}
protected void Page_Load(object sender, EventArgs e) {
}
protected string getDate() {
return Convert.ToString(DateTime.Now.Year);
}
[WebMethod]
protected void InsertPoints(int x, int y) {
xVar = x;
yVar = y;
//SQL Connect stuff and other code that works
}
}
从aspx页面调用该方法,它会调用它。问题是它将变量初始化为零,无论我在Canvas中单击的位置如何,它们都保持这种状态。事实上,当有一个SQL插入时,它会插入正确的整数(x和y),但是我无法更改静态变量。 感谢。
答案 0 :(得分:0)
好吧,我会猜测我在评论中学到了什么。
我认为您在解决问题时使用的工作流程中存在错误。
发生了什么,而且你的电话是否是你所期望与否的,是你的:
alert
值更新xCoord
来电。此处的关键是评估<%=...%>
的位置。当你第一次拉页面时,会发生对该表达式的评估,直到你发出另一个请求才会再次调用它。
换句话说,alert('<%= xCoord %>')
在页面加载时在服务器端进行评估,浏览器得到最终的alert('0')
,而不是原始静态变量的一些神奇链接。
快速检查是刷新页面。如果你:
应该正确更新。
你能够实现它想要的功能的唯一方法是使用你推送到web方法的值,这只能在原始浏览器窗口上工作,或者使用类似的库SignalR处理所有连接浏览器的数据实时下推。
如果我误解了您的设置,或者我是否可以澄清其中的任何内容,请告诉我。同样,我的理解主要只是你在评论中所说的内容的推论。我知道这是正确的,但您需要确认它是否与相关。
包括我在内的一些人在评论中提到了这一点,但我也会在这里说。根据我自己的评论,
小心使用ASP中的静态内容。您可能遇到一些线程问题,以及静态字段或属性的多个实例。它变得凌乱。只有在数据可能过时时才使用静态。