Обработка POST со списком JSON в .NET Core API

Я пытаюсь получить ответ пользователя из формы Моя модель для ответа выглядит следующим образом:

{
        public int UserId { get; set; }
        public int QId { get; set; }
        public int OptionId { get; set; }
        public string Response { get; set; }

        public SurveyCreatorOptions SurveyCreatorOptions { get; set; }
        public SurveyUserMasters User { get; set; }
    }

Вышеупомянутая модель и DbContext был создан, был создан на основе существующей базы данных, используя первый подход базы данных efcore.

Метод POST в контроллере выглядит так:

// POST: api/SurveyUserResponses
        [HttpPost]
        public async Task<IActionResult> PostSurveyUserResponse([FromBody] SurveyUserResponse surveyUserResponse)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            _context.SurveyUserResponse.Add(surveyUserResponse);
            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateException)
            {
                if (SurveyUserResponseExists(surveyUserResponse.UserId))
                {
                    return new StatusCodeResult(StatusCodes.Status409Conflict);
                }
                else
                {
                    throw;
                }
            }

            return CreatedAtAction("GetSurveyUserResponse", new { id = surveyUserResponse.UserId }, surveyUserResponse);
        }





Используя этот метод в моем контроллере, я могу отправить запрос в следующем формате:

{
        "userId": 1,
        "qId": 2,
        "optionId": 1,
        "response": "Male",
        "surveyCreatorOptions": null,
        "user": null
    }

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

[
{
        "userId": 1,
        "qId": 1,
        "optionId": 1,
        "response": "XYZ",
        "surveyCreatorOptions": null,
        "user": null
    },

{
        "userId": 1,
        "qId": 2,
        "optionId": 1,
        "response": "Male",
        "surveyCreatorOptions": null,
        "user": null
    },

{
        "userId": 1,
        "qId": 3,
        "optionId": 4,
        "response": "Samsung",
        "surveyCreatorOptions": null,
        "user": null
    }
]

Я новичок в .NET Я не понимаю, как написать метод POST и привязать каждый элемент из приведенного выше списка к моей базе данных. Я сделал метод поста Ajax, который может отправлять JSON вышеупомянутого формата, так что это не проблема

Всего 1 ответ


Вышеупомянутый метод будет захватывать только одно поле формы, но моя форма содержит несколько полей

Встроенные ModeBinder позаботятся о том, чтобы, если вы измените свое действие, чтобы сохранить List<> :

public async Task<IActionResult> PostSurveyUserResponse([FromBody] SurveyUserResponse surveyUserResponse)
public async Task<IActionResult> PostSurveyUserResponse([FromBody] List<SurveyUserResponse> surveyUserResponses)
{
    ....
}

Есть идеи?

10000