。NET Core API中处理带有JSON列表的POST

问题描述 投票:0回答:1

我正在尝试从表单捕获用户响应我的响应模型如下所示:

{
        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 post方法,可以发送上述格式的json,所以这不是问题

json api asp.net-core post .net-core
1个回答
0
投票

上述方法将仅捕获表单的一个字段,但我的表单包含多个字段

内置的ModeBinders会注意,如果您更改操作以适应List<>

公共异步任务 PostSurveyUserResponse([FromBody] SurveyUserResponse surveyUserResponse)公共异步任务 PostSurveyUserResponse([FromBody]列表 surveyUserResponses){....}
© www.soinside.com 2019 - 2024. All rights reserved.