【发布时间】:2017-03-20 09:52:58
【问题描述】:
进一步提出我的以下问题,
What is causing the model to null
我花了三个多小时找出原因。作为命中尝试过程的一部分,我从课堂上删除了[Serializable],令人惊讶的模型开始获得价值。
角度服务:-
app.service('loginService', ['$http', function ($http) {
this.userLogin = function (user) {
console.log(user); //prints {'username': 'username@gmail.com', 'password': 123'}
$http(
{
url: "/api/user/login",
method: "POST",
data: { 'model': user },
contentType: "application/json"
})
.then(function (data) {
if (data.status.toLower() === "success") {
return data;
}
else {
return null;
}
});
}
角度控制器
app.controller('homeCtrl', ['$scope', 'loginService', function ($scope, loginService) {
$scope.login = function (user) {
debugger;
console.log($scope.user);
var data = loginService.userLogin($scope.user);
}
WebAPI。
[Route("api/user/login")]
public void Post([FromBody]LoginVM model)
{
if(ModelState.IsValid)
{
}
else
{
}
}
但是当我调试 WebAPI 模型时,它的所有值都为空。
我的初始 LoginVM 类
[Serializable]
public class LoginVM
{
[Required]
public string Username { get; set; }
[Required]
public string Password { get; set; }
}
以下两次更新解决了我的问题。
1
//[Serializable] removed this attribute
public class LoginVM
{
[Required]
public string Username { get; set; }
[Required]
public string Password { get; set; }
}
2
$http(
{
url: "/api/user/login",
method: "POST",
data: user , // directly passed user object to API
contentType: "application/json"
})
我想了解用 [Serializable] 属性装饰一个类并直接传递对象有何不同??
如果我需要传递多个参数,那我将如何传递呢??
【问题讨论】:
标签: c# angularjs serialization asp.net-web-api