2011-10-23 1 views
2

extjsから投稿された.asmxの変数に投稿された値を受け取る方法は、ado.netを使用してデータベースに保存することができますか?
enter image description here

彼らは[で使用できるように適切に.asmxファイルでこの値を受け取る方法:submited、放火犯がエラーを報告する場合EXT.AJAX
AsmxはExtjsからPOSTされた値(params)を受け取っていますか?

{ 
    text: 'Add', 
    formBind: true, 
    disabled: true, 
    handler: function() { 

     var form = this.up('form').getForm(); 
     var formValues = form.getValues(); 

     var firstName = formValues.firstName; 
     var lastName = formValues.lastName; 

     if (form.isValid()) { 

      Ext.Ajax.request({ 

       url: 'WebServices/WebService.asmx/AddAgent', 
       headers: { 'Content-Type': 'application/json' }, 
       method: 'POST', 
       jsonData: { FirstName: firstName, LastName: lastName } 


      }); 
     } 
    } 
} 


WITHデータを送信

WebMethod]を開き、Ado.Netに保存しますか?

[Serializable] 
    public class Agents 
    { 
     public int Id { get; set; } 
     public string FirstName { get; set; } 
     public string LastName { get; set; } 
    } 


    //CREATE 
    [WebMethod] 
    [ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = true)] 

    public string AddAgent() 
    { 
     string connStr = ConfigurationManager.ConnectionStrings["AgentsServices"].ConnectionString; 

     using (SqlConnection connection = new SqlConnection(connStr)) 
     { 
      connection.Open(); 

      using (SqlCommand command = new SqlCommand("insert into Agent(id, firstName, lastName) values(@id, @firstName, @lastName)", connection)) 
      { 
       command.Parameters.AddWithValue("@firstName", FirstName); //here i get message(The name "FirstNAme does not exist in current context") 
       command.Parameters.AddWithValue("@lastName", LastName); // -||- 

       command.ExecuteNonQuery(); 

      } 
     }  
    } 

EDIT:

号STIL 500内部サーバーエラー:


enter image description here

答えて

3

あなたのウェブメソッドは、任意の引数を取るようには見えません。また、あなたのメソッドは文字列を返すことを期待していますが、何も返しません。したがって、何かを返すか、メソッドシグネチャをvoidに変更してください。また、UseHttpGet = trueを設定しましたが、POSTリクエストを送信しています。あなたがnull非許容整数として、あなたのエージェントモデルのIDプロパティを定義しているので、私はそれのために値を送信することをお勧めだろう。また

[WebMethod] 
[ScriptMethod] 
public void AddAgent(Agents agents) 
{ 
    string connStr = ConfigurationManager.ConnectionStrings["AgentsServices"].ConnectionString; 
    using (SqlConnection connection = new SqlConnection(connStr)) 
    { 
     connection.Open(); 
     using (SqlCommand command = new SqlCommand("insert into Agent(id, firstName, lastName) values(@id, @firstName, @lastName)", connection)) 
     { 
      command.Parameters.AddWithValue("@firstName", agents.FirstName); 
      command.Parameters.AddWithValue("@lastName", agents.LastName); 
      command.ExecuteNonQuery(); 
     } 
    }  
} 

::次のように試してみてください

jsonData: { agents: { Id: 0, FirstName: firstName, LastName: lastName } } 
+0

更新質問! –

+2

@Ingol、答えが更新されました。JSONにエージェントパラメータ名を渡してみてください。 'jsonData:{エージェント:{Id:0、名}:firstName、lastName:lastName}}' –

+0

ありがとう! –

関連する問題