我有一个WebMethod,我只想将属性翻转为true。
我使用C#将它放在.aspx页面的代码隐藏中。
$.ajax({
url: "http://localhost:53660/api/pooltests",
method: "POST",
data: { "Id": 1, "SiteID": "sample string 2", "Date": "sample string 3", "Tub": "sample string 4",
"par1": 5.1, "par2": 6.1, "par3": 7.1, "par4": 8.1 }
})
.done(function(result) {
console.log("success", result);
})
.fail(function(xhr, txtStatus) {
console.log("error", txtStatus);
});
我在.ascx.cs文件中声明了该属性:
public partial class Data : Base
{
protected void Page_Load(object sender, EventArgs e)
{
this.bgc1.BGEnabled = false;
}
[WebMethod(EnableSession = true)]
public static void EnableBellows()
{
this.bgc1.BGEnabled = true;
}
}
最后,我使用jQuery Ajax帖子调用WebMethod。
我收到private bool _enabled = true;
public bool BGEnabled
{
get { return _enabled; }
set { _enabled = value; }
}
在静态属性中无效的错误。此错误仅在WebMethod中,但不在Page_Load中。
我的目标是将BGEnabled翻转为true。如果我的方法不正确,我需要采取哪些不同的做法?我需要能够从ajax帖子中做到这一点。
答案 0 :(得分:3)
我收到的错误是静态属性无效。
事实上。实际上,在这种情况下,它是一种静态方法。
静态成员是与该类型相关联的成员,而不是与该类型的任何实例相关联 - 所以在这里,我们可以直接调用mouseleave
:
EnableBellows
...没有创建Data.EnableBellows();
的任何实例。由于Data
是指"该方法被调用的对象的实例",它在静态成员中没有意义。
您需要考虑数据的来源以及您对修改过的数据的处理方式。请记住,Web方法不在加载页面时被调用,因此它无法访问页面上的任何控件等。
基本上,我怀疑你需要重新审视Web方法和ASP.NET页面的整个概念。
答案 1 :(得分:1)
在静态方法内部,您只能访问静态方法范围内的静态方法/对象或实例声明