2014-06-11 24 views
3

我想知道是否有可能將數據從AngularJS傳遞給webservice中帶有模型參數的函數?是否有可能將數據從AngularJS傳遞給webservice中帶有模型參數的函數?

這裏是我的web服務代碼:

[WebMethod] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public void AddUser(
    //string FirstName, string LastName, string Mi //this works 
    User user //not working 
    ) 
{ 
    SqlConnection con = new SqlConnection(@"Data Source=########;Initial Catalog=test001;Persist Security Info=True;User ID=########;Password=########"); 
    SqlCommand cmd = new SqlCommand("insert into [dbo].[User] values(@fname,@lname,@mi)", con); 

    con.Open(); 
    cmd.Parameters.AddWithValue("@fname", user.FirstName); 
    cmd.Parameters.AddWithValue("@lname", user.LastName); 
    cmd.Parameters.AddWithValue("@mi", user.Mi); 
    cmd.ExecuteNonQuery(); 
    con.Close(); 
} 

這裏是我的angularJS代碼:

$scope.Create = function() { 
    var user = { 
     FirstName: $scope.FirstName, 
     LastName: $scope.LastName, 
     Mi: $scope.Mi 
    }; 

    $http.post('testws.asmx/AddUser', user, { 
     headers: { 'Content-Type': 'application/json; charset=utf-8' } 
    }).success(function (data) { 
     alert('Success'); 
    }); 
} 
+1

我想你應該seperately發送參數(名字,姓氏,MI),並在服務方法創建'User'對象。 –

+0

所以這意味着,這是不可能的? @TolgaEvcimen – Unknown

回答

1

這是非常可行的。在最壞的情況下,您可以像這樣在服務方法中從Request.Form中提取參數。

[WebMethod] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public void AddUser() 
{ 
    /// here you get your json object from post data 
    var serializedUser = Request.Form["user"] as string; 
    var user = JsonConvert.DeserializeObject<User>(serializedUser); 

    SqlConnection con = new SqlConnection(@"Data Source=172.16.176.74;Initial Catalog=test001;Persist Security Info=True;User ID=onbapps;Password=sdu_123456"); 
    SqlCommand cmd = new SqlCommand("insert into [dbo].[User] values(@fname,@lname,@mi)", con); 

    con.Open(); 
    cmd.Parameters.AddWithValue("@fname", user.FirstName); 
    cmd.Parameters.AddWithValue("@lname", user.LastName); 
    cmd.Parameters.AddWithValue("@mi", user.Mi); 
    cmd.ExecuteNonQuery(); 
    con.Close(); 
} 

所以這是可能的,但我相信有這樣做的很多幹淨的方法。

1

在服務或工廠,你可以編寫

var promise = $http({ 
url: "testws.asmx/AddUser"+ "/Post", 
method: "POST", 
data: user 
}); 
return promise; 
相關問題