我已经找到了很多解决方案,但这些解决方案对我来说都没有意义。基本上我是使用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;
}
}
答案 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);