Есть несколько вещей, которые нужно сделать или проверить:
(1) Сделать все свойства public
в вашем class updateConsentObj
.
(2) Убедитесь, что ваш POST-запрос содержит заголовок, который говорит Content-Type: application/json
, это говорит MVC использовать JSON синтаксический анализатор.
( 3) В JSON, который вы разместили, отсутствует "
, это должно быть {"consentInstanceId":"my-consent","ampUserId":"amp-xxxx","consentState":true,"consentStateValue":"accepted"}
С учетом всего вышесказанного мне удалось сделать успешный звонок на оба типа метода действия. Ниже приведен код, который я использовал, и результаты.
Использование класса:
[HttpPost]
public ActionResult updateconsent([System.Web.Http.FromBody]updateConsentObj obj)
{
return Content(
"OK: " +
"obj.consentInstanceId = [" + (obj.consentInstanceId ?? "(null)") + "], " +
"obj.ampUserId = [" + (obj.ampUserId ?? "(null)") + "], " +
"obj.consentState = [" + obj.consentState + "], " +
"obj.consentStateValue = [" + (obj.consentStateValue ?? "(null)") + "]");
}
Это дает
OK: obj .consentInstanceId = [мое согласие], obj.ampUserId = [amp-xxxx], obj.consentState = [True], obj.consentStateValue = [принято]
Использование отдельных параметров:
[HttpPost]
public ActionResult updateconsent(string consentInstanceId, string ampUserId, bool consentState, string consentStateValue)
{
return Content(
"OK: " +
"consentInstanceId = [" + (consentInstanceId ?? "(null)") + "], " +
"ampUserId = [" + (ampUserId ?? "(null)") + "], " +
"consentState = [" + consentState + "], " +
"consentStateValue = [" + (consentStateValue ?? "(null)") + "]");
}
Это приводит к
OK: acceptInstanceId = [мое-согласие], ampUserId = [amp-xxxx], acceptState = [True], acceptStateValue = [ принято]