【问题标题】:Action has more than one parameter that was specified or inferred as bound from request body. Only one parameter per action may be bound from bodyAction 有多个参数被指定或推断为从请求正文绑定。每个动作只能绑定一个参数
【发布时间】:2021-09-01 05:33:29
【问题描述】:

错误:动作有多个参数被指定或推断为从请求正文绑定。每个动作只能绑定一个参数 .netcore

当我用我的 .net 核心项目的 2 个参数编写一个新的 httpPost 方法并出现上述错误时。我该如何解决这个问题。

        [HttpPost]
        public async Task<IActionResult> Create([FromBody] UserBO userBO, [FromBody] SiteCode siteCode)
        {
            try
            {

                await _userService.CreateUserAsync(userBO, siteCode);

                return Created(nameof(Get), userBO);
            }
            catch (Exception ex)
            {
                return HandleException(ex);
            }
        }

【问题讨论】:

  • 嗯,错误信息很清楚——基本上你只能使用[FromBody]和一个参数。目前尚不清楚您期望它如何工作 - 当然主体是要么 UserBO SiteCode,但它不能同时是两者。在这种情况下,身体是什么样的?也许您需要一个新类型,它同时包含 UserBOSiteCode
  • 您可以在 POST 中添加多个 MIME 附件。请参阅:docs.microsoft.com/en-us/previous-versions/office/developer/…
  • 当我创建用户时,将记录添加到另一个表(siteUSer 表)。所以我需要添加两个参数。我不知道应该放什么,这就是为什么我把 [frombody] 放在两者之前
  • 您可以将SiteCode 作为路径的一部分传递吗?它似乎是一个必填字段。如果用户是在站点的上下文中创建的,那将是一种描述关系的 RESTful 方式。如果它们不是在站点的上下文中创建的,那么包装对象是理想的。

标签: c# asp.net-core asp.net-core-3.1


【解决方案1】:

您可以尝试创建一个包含 userBO 和 siteCode 的新模型:

型号:

public class USModel
    {
        public UserBO userBO { get; set; }
        public SiteCode siteCode { get; set; }
    }

行动:

[HttpPost]
        public async Task<IActionResult> Create([FromBody] USModel uSModel)
        {
            try
            {

                await _userService.CreateUserAsync(uSModel.userBO, uSModel.siteCode);

                return Created(nameof(Get), uSModel.userBO);
            }
            catch (Exception ex)
            {
                return HandleException(ex);
            }
        }

json格式:

{
    "userBO":
    {
        ...
    },
    "siteCode":
    {
        ...
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-29
    • 2016-09-30
    • 1970-01-01
    相关资源
    最近更新 更多