C#错误:非静态字段需要对象引用

时间:2014-01-18 21:40:08

标签: c# jquery ajax

我已经找到了很多解决方案,但这些解决方案对我来说都没有意义。基本上我是使用jQuery AJAX提交表单并尝试更新已经在我的表中的行但是得到错误:非静态字段需要对象引用。如果我更改“txtContactLastEdit.Text;”到“新名字”一切都好。只有在我引用表单上的txt字段时才会这样。有任何想法吗? 谢谢!

[WebMethod]
public static string updateProject(int id)
{
    using (dbPSREntities5 myEntities = new dbPSREntities5())
    {
        // Query for a specific customer. 
        var proj =
            (from tbProject in myEntities.tbProjects
             where tbProject.ProjectID == id
             select tbProject).First();

        // Change the name of the contact.
        proj.ProjectContactLastName = txtContactLastEdit.Text;

        // Ask the DataContext to save all the changes.
        myEntities.SaveChanges();

        var myResult = "success";

        return myResult;

    }
}

2 个答案:

答案 0 :(得分:3)

您无法访问静态方法中的页面控件。

您可能从客户端调用此方法,因此另一种方法是从客户端发送txtContactLastEdit.Text并更改您的函数以接受该参数。

[WebMethod]
public static string updateProject(int id, string textBoxValue)
{
  // your code.
}

答案 1 :(得分:2)

尝试将文本框的值传递给static方法

WebMethod]
public static string updateProject(int id, string contactName)
{
    ....

        // Change the name of the contact.
        proj.ProjectContactLastName = contatcName;


}

在静态方法中,您不能使用静态方法id定义的类的实例变量,而txtContactLastEdit是TextBox类型的Page的实例变量。因此,假设静态方法属于名为Project的类,那么您可以从页面中的某个位置调用它。

int projectID = 1;
Project.updateProject(projectID,txtContactLastEdit.Text);