服务
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;
}
嘿同性恋我的问题是,当我将数据传递给C#controller时,我的loginInfo是 null 有效负载是正常的并显示stringify loginfo但我的方法没有得到logInfo。请帮助我,我是c#part 的新手
答案 0 :(得分:2)
您的服务应该将stringify数据传递给服务器,因为您在JSON.stringify({loginInfo: loginInfo})
<强> CODE 强>
$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类,它将直接映射到类,您不需要对其进行反序列化。
答案 1 :(得分:0)
进行以下更改 -
<强> C#强>
创建一个新类 -
public class LoginInformation
{
public string user { get; set;}
public string password { get; set; }
}
更改LogIn方法的参数以使用新类
public string LogIn(LoginInformation loginInfo)
{
}
<强>角强>
从控制器中删除此行(因为您已提到标题:{&#39; Content-Type&#39;:&#39; application / json&#39;})
loginInfo = JSON.stringify(loginInfo);
确保网址(网址:&#39; ./ data / LogIn&#39;,)是有效的。