Estoy enviando valores desde un front-end de Angular 2 como se ve aquí:
censusManagementSearch(search: any): Observable<any> { let headers = new Headers({ 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem('token') }); let options = new RequestOptions({ headers: headers }); let body = JSON.stringify({ practice: search.practice, location: search.location, name: search.name }); return this.http.post(this._api.apiUrl + 'censusmanagement', body, options) .map((response: Response) => { return response; }) .catch((err: any) => { return Observable.throw(err.json().error || 'Server error'); }); }Todo allí está funcionando bien. Va a un back-end de C# como se ve a continuación. Si importa, es una API web central de ASP.Net
[HttpPost] public IActionResult PostCensusManagement([FromBody] int practice, int location, string name) Cuando pongo un punto de ruptura en esto, los valores son 0 para los enteros y "" para la cadena. Intenté [FromBody] y reemplazarlo con otras opciones. Cada vez que los valores están en blanco.
Aquí hay una imagen que muestra los valores que se envían en Chrome 
Encontré la respuesta. Lo dejo aquí por si alguien más se encuentra con este problema. Para que la API web viera los datos, tuve que crear una clase para ellos.
public class CensusSearch { public int location { get; set; } public int practice { get; set; } public string name { get; set; } }Y cambié el controlador a esto:
[HttpPost] public IActionResult PostCensusManagement([FromBody] CensusSearch search)