【发布时间】:2018-11-18 18:52:20
【问题描述】:
在调试 web api post 操作的值始终为空时,我尝试了所有方法。 我尝试更改标题,我在发布的模型类上方添加了 [JsonObject(MemberSerialization.OptOut)],我尝试了一个简单的 Dto。没有任何工作... 这是传递用户数据的控制器函数:
$scope.Add = function () {
var user = {
ID: $scope.ID,
FirstName: $scope.FirstName,
LastName: $scope.LastName,
Age: $scope.Age,
Address: $scope.Address
};
$scope.usersRepo.push(user);
myService.addUser(user);
服务功能是:
var addUser = function (user) {
return $http.post(
usersApi + '/addNewUser',
JSON.stringify(user)),
{
headers: {
'Content-Type': 'application/json'
}
};
};
web api 操作是:
[HttpPost, ActionName("addUser")]
public void Post([FromBody]UserModel value)
{
UsersDB.Add(value);
}
我的模型是这样的:
[JsonObject(MemberSerialization.OptOut)]
public class UserModel
{
public UserModel()
{
}
public UserModel(string firstName, string lastName, int age, string address)
{
this.Address = address;
this.Age = age;
this.FirstName = firstName;
this.LastName = lastName;
}
public void ConvertDto(UserDto userDto)
{
ID = userDto.ID;
FirstName = userDto.FirstName;
LastName = userDto.LastName;
Age = userDto.Age;
Address = userDto.Address;
}
public int ID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
public string Address { get; set; }
}
【问题讨论】:
-
通常不需要对 POST 数据进行字符串化,因为 AngularJS $http 服务会自动执行此操作。还需要添加
application/json标头,因为这是默认的。 -
那是我的出发点。
-
我发表评论是为了让其他人不会复制不必要的代码。
标签: angularjs http post asp.net-web-api service