Основной пост asp.net API всегда получать ноль - PullRequest
0 голосов
/ 13 ноября 2018

Вот мой угловой код 6

saveQuestion(value : string) : Observable<string> {
    console.log(value)
    let params = new HttpParams();
    params = params.set('id', value);
    return this._http.post<string>(this.subjectAPi + 'api/Question/Save/', {params});
}

ниже мой код ядра .net

[HttpPost("[action]")]
public IActionResult Save([FromBody]string id)
{
    Question ob = new Question();
    ob.update(id)  // id is always null
    return Ok("1");
}

Идентификатор всегда нулевой.Предложение будет по достоинству оценено

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

HttpParams предназначен для подготовки параметров в кодировке URL, если вы хотите опубликовать тело в JSON, вам это не нужно. Попробуйте просто создать свои данные, как:

let body = { id: value }
this._http.post<string>(this.subjectAPi + 'api/Question/Save/', body);

Если вы действительно хотите опубликовать свое тело как данные в кодировке URL, попробуйте установить заголовок запроса Content-Type:

this._http.post<string>(this.subjectAPi + 'api/Question/Save/', params.toString(), {
    headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
});
0 голосов
/ 13 ноября 2018

Если я не ошибаюсь, ASP.NET Core по умолчанию не работает с camelCasing for JSON. Попробуйте переименовать id в HttpParams на Id.

saveQuestion(value : string) : Observable<string> {
    let params = new HttpParams();
    params = params.set('Id', value);
    return this._http.post<string>(this.subjectAPi + 'api/Question/Save/', {params});
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...