将数据从 http 请求传递到 C# 控制器
pass data from http request to C# controller
我的问题是,当我将数据传递给 C# 控制器时,我的 loginInfo 是 null 负载正常并显示 stringify loginfo,但我的方法没有获取 logInfo。
服务
comaxApp.factory('user', function($http) {
return {
login: function(loginInfo) {
$http({
url: './data/LogIn',
method: "POST",
data: loginInfo,
headers: {
'Content-Type': 'application/json'
}
}).success(function(data, status, headers, config) {
$scope.users = data.users;
}).error(function(data, status, headers, config) {
$scope.status = status + ' ' + headers;
});
}
};
});
控制器
$scope.login = function() {
var loginInfo = {
"user": "admin",
"password": "123"
};
loginInfo = JSON.stringify(loginInfo);
user.login(loginInfo).then(function(users) {
$scope.users = users.data;
}, function(status) {});
};
MVC 控制器
public string LogIn(string loginInfo) {
var obj = new JavaScriptSerializer();
var result = obj.DeserializeObject(loginInfo);
var db = new comaxDataEntities();
var linq = db.accounts.Where(u => u.userName == loginInfo);
var useraccount = linq.FirstOrDefault < account > ();
var javaScriptSerializer = new JavaScriptSerializer();
string jsonString = javaScriptSerializer.Serialize(useraccount);
return jsonString;
}
您的服务应该将 stringify 数据传递给服务器,因为您在像 JSON.stringify({loginInfo: loginInfo})
这样的操作中被声明为字符串参数
代码
$http({
url: './data/LogIn',
method: "POST",
data: JSON.stringify({
loginInfo: loginInfo
}),
headers: {
'Content-Type': 'application/json'
}
}).success(function(data, status, headers, config) {
$scope.users = data.users;
}).error(function(data, status, headers, config) {
$scope.status = status + ' ' + headers;
});
为了更好的方法,我更愿意在服务器端创建 loginInfo class,它会直接映射到 class,您不需要反序列化它。
进行以下更改 -
C#
创建一个新的 class -
public class LoginInformation
{
public string user { get; set;}
public string password { get; set; }
}
更改 LogIn 方法的参数以使用新的 class
public string LogIn(LoginInformation loginInfo)
{
}
Angular
从控制器中删除这一行(因为你提到了 headers: {'Content-Type': 'application/json'})
loginInfo = JSON.stringify(loginInfo);
确保 URL (url: './data/LogIn',) 是有效的。
我的问题是,当我将数据传递给 C# 控制器时,我的 loginInfo 是 null 负载正常并显示 stringify loginfo,但我的方法没有获取 logInfo。
服务
comaxApp.factory('user', function($http) {
return {
login: function(loginInfo) {
$http({
url: './data/LogIn',
method: "POST",
data: loginInfo,
headers: {
'Content-Type': 'application/json'
}
}).success(function(data, status, headers, config) {
$scope.users = data.users;
}).error(function(data, status, headers, config) {
$scope.status = status + ' ' + headers;
});
}
};
});
控制器
$scope.login = function() {
var loginInfo = {
"user": "admin",
"password": "123"
};
loginInfo = JSON.stringify(loginInfo);
user.login(loginInfo).then(function(users) {
$scope.users = users.data;
}, function(status) {});
};
MVC 控制器
public string LogIn(string loginInfo) {
var obj = new JavaScriptSerializer();
var result = obj.DeserializeObject(loginInfo);
var db = new comaxDataEntities();
var linq = db.accounts.Where(u => u.userName == loginInfo);
var useraccount = linq.FirstOrDefault < account > ();
var javaScriptSerializer = new JavaScriptSerializer();
string jsonString = javaScriptSerializer.Serialize(useraccount);
return jsonString;
}
您的服务应该将 stringify 数据传递给服务器,因为您在像 JSON.stringify({loginInfo: loginInfo})
代码
$http({
url: './data/LogIn',
method: "POST",
data: JSON.stringify({
loginInfo: loginInfo
}),
headers: {
'Content-Type': 'application/json'
}
}).success(function(data, status, headers, config) {
$scope.users = data.users;
}).error(function(data, status, headers, config) {
$scope.status = status + ' ' + headers;
});
为了更好的方法,我更愿意在服务器端创建 loginInfo class,它会直接映射到 class,您不需要反序列化它。
进行以下更改 -
C#
创建一个新的 class -
public class LoginInformation
{
public string user { get; set;}
public string password { get; set; }
}
更改 LogIn 方法的参数以使用新的 class
public string LogIn(LoginInformation loginInfo)
{
}
Angular
从控制器中删除这一行(因为你提到了 headers: {'Content-Type': 'application/json'})
loginInfo = JSON.stringify(loginInfo);
确保 URL (url: './data/LogIn',) 是有效的。