2014-01-18 47 views
1

我发现了很多解决方案,但它们都没有意义。基本上我使用jQuery AJAX提交表单,并尝试更新表中的行,但得到错误:非静态字段需要对象引用。如果我更改“txtContactLastEdit.Text;”到“新名称”一切安好。只有当我引用表单上的txt字段时才是如此。有任何想法吗? 谢谢!C#错误:非静态字段需要对象引用

[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; 

    } 
} 

回答

3

您无法访问Static Method中的页面控件。

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

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

对。当我删除“静态”并提交AJAX时,出现错误:System.ArgumentException:未知的Web方法updateProject。 – user1431633

+0

是的,我必须通过AJAX将txtContactLastEdit的值发送给静态方法。谢谢! – user1431633

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); 
相关问题