static void c#webmethod无法引用用户控件?

时间:2015-06-16 18:06:39

标签: c# ajax webmethod

我有一个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帖子中做到这一点。

2 个答案:

答案 0 :(得分:3)

  

我收到的错误是静态属性无效。

事实上。实际上,在这种情况下,它是一种静态方法。

静态成员是与该类型相关联的成员,而不是与该类型的任何实例相关联 - 所以在这里,我们可以直接调用mouseleave

EnableBellows

...没有创建Data.EnableBellows(); 的任何实例。由于Data是指"该方法被调用的对象的实例",它在静态成员中没有意义。

您需要考虑数据的来源以及您对修改过的数据的处理方式。请记住,Web方法在加载页面时被调用,因此它无法访问页面上的任何控件等。

基本上,我怀疑你需要重新审视Web方法和ASP.NET页面的整个概念。

答案 1 :(得分:1)

在静态方法内部,您只能访问静态方法范围内的静态方法/对象或实例声明