从AngularJS传递params到C#Controller

时间:2015-07-19 22:33:46

标签: c# angularjs

我已经尝试过对此进行研究,但我找不到任何有用或任何相关答案的地方。

对于我的角度控制器,我有:

app.controller('AdminCtrl', function ($scope, $http) {
$scope.data = {
    Name: '',
    Password: ''
},
$scope.login = function (data) {
    $http({
        method: 'POST',
        url: '/login/postlogin',
        data: JSON.stringify({
            data: $scope.data
        }),
        contentType: "application/json",
        dataType: "json"
    }).success(function (data) {
        alert('success!');
    }).error(function (error) {
        alert(error.message);
    })
}
});

对于我的c#控制器,我有一个非常基本的设置:

    [HttpPost]
    public string PostLogin(string data) {          
        return string.Empty;
    }

我的问题是在c#控制器内部,数据始终为空。有谁知道如何将名称和密码params传递给c#控制器?我知道一个事实,我从我的文本框中收到了它们的价值。我也收到了成功的消息/警告。谢谢!

2 个答案:

答案 0 :(得分:3)

数据不是字符串。在c#中创建一个名称和密码为对象的对象,并具有:

[HttpPost]
public string PostLogin(Data data) {  

编辑以回应评论: 是的,您需要在控制器中包含Data所在的命名空间。您可以尝试将Data对象直接放在上面。

 public class Data
    {
        public string Name { get; set; }
        public string Password { get; set; }
    }

为清楚起见,不应将数据进行字符串化,而只是将其作为data: data

发送

答案 1 :(得分:1)

直接发送$ scope.data,不要将其字符串化。然后修改PostLogin方法,使其接受两个字符串,一个名为Name,另一个名为Password。