簡體   English   中英

是否可以將數據從AngularJS傳遞到webservice中具有模型參數的函數?

[英]Is it possible to pass data from AngularJS to a function with a model parameter in webservice?

我想知道是否可以將數據從AngularJS傳遞到webservice中具有模型參數的函數?

這是我的webservice代碼:

[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');
    });
}

這是非常可行的。 在最壞的情況下,您可以在服務方法中從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();
}

所以這是可能的,但我確信存在更多更簡潔的方法。

在服務或工廠,你可以寫

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM