2014-01-18 52 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); 
相關問題