Http.Post передает параметры как ноль - PullRequest
0 голосов
/ 31 мая 2018

Я пытался передать объект класса из вызова службы angular 6 в метод публикации web api, метод api успешно обработан, но объект класса, который я передаю, показывает ноль.

Служба AngularJS: -

  import { Injectable } from '@angular/core';
  import { User } from './user.model'
  import { Http, Response, Headers, RequestOptions, RequestMethod } from 
  '@angular/http';
  import { Observable } from 'rxjs/Observable' ;
  import 'rxjs/add/operator/map';
  import 'rxjs/add/operator/toPromise';

  @Injectable({
  providedIn: 'root'
  })
  export class UserService {
  selectedUser: User;
  constructor(private http: Http) { }
  postUser(user: User) {
  debugger;
  var body = JSON.stringify(user);
  var headerOperations = new Headers({ 'Content-Type': 'application/json' 
  });
  var requestOptions = new RequestOptions({ method: RequestMethod.Post, 
  headers: headerOperations })
  return this.http.post('http://localhost:54516/Account/Register', body, 
  requestOptions).map(x => x.json);
  }
  }

Метод веб-API:

[AllowAnonymous]       
[HttpPost]
//[ValidateAntiForgeryToken]
public void Register(User body)
{
}

Класс модели:

public class User
    {       
    public string Email { get; set; }

    public string PhoneNumber { get; set; }

    public string Password { get; set; }

    public string ConfirmPassword { get; set; }
}

Ниже приведены данные в действии на стороне AngularJs:

enter image description here

Наконец, метод Web Api Controller с нулевым объектом:

enter image description here

Corsуже определены на самом контроллере.

[EnableCors(origins: "http://localhost:4200",headers:"*", methods:"*")]

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

Попробуйте это:

 postUser(user: User) {
        let bodyString = JSON.stringify(user);
        let headers = new HttpHeaders({ 'Content-Type': 'application/JSON' });
        return this._http.post<any>('http://localhost:54516/Account/Register', bodyString, { headers: headers });
    }

и на сервере:

[AllowAnonymous]       
 [HttpPost]
 //[ValidateAntiForgeryToken]
 public void Register([FromBody]User body)
 {

 }
0 голосов
/ 31 мая 2018

Для начала вам не нужно stringify тело, вы можете удалить эту строку

var body = JSON.stringify(user);

, а также попытаться добавить атрибут [FromBody] к параметру действия

 [AllowAnonymous]       
 [HttpPost]
 //[ValidateAntiForgeryToken]
 public void Register([FromBody]User body)
 {

 }
...