无法将多个参数绑定到请求的内容

Posted

技术标签:

【中文标题】无法将多个参数绑定到请求的内容【英文标题】:Can't bind multiple parameters to the request's content 【发布时间】:2020-04-15 07:03:24 【问题描述】:

我有两个类,基本上我试图用两个存储过程调用两个单独的模型来在两个表中插入数据。我这样写我的控制器:

[HttpPost]
public IHttpActionResult Adddata([FromBody]IList<Details> details,[FromBody] Request request)

    var changerequestResponse = db.sp_AddChangerequests(request.EmpID, request.CreatedDate, request.Status).SingleOrDefault();
    GenericResponse objResponse = null;
    foreach (Details detail in detailss)
    
        var data = JsonConvert.SerializeObject(db.sp_AddChangerequestDetails(detailss.CRID, detailss.Category, detailss.Info, detailss.Col, detailss.Reason).SingleOrDefault(), Formatting.Indented, settings);
        objResponse = JsonConvert.DeserializeObject<GenericResponse>(data);

    
    return Ok(objResponse);


和我的控制器js文件是这样的:

$scope.SubmitrequestForm = function()            
    console.log($scope.changereqcol);
    var req = 
        method: 'POST',
        url: WebApiUrl + 'Adddata',
        headers: 
            'Content-Type': 'application/json'
        ,
        data: JSON.stringify($scope.changereqcol)
    
    console.log()
    $http(req).then(function (data, status) 
        console.log(data);
    , function (err, status) 
        console.log(err);
    );
;

当我尝试提交数据时,我遇到了错误。你能告诉我我错过了什么吗

【问题讨论】:

您遇到什么错误?此外,每个操作最多可以有一个以[FromBody] 修饰的参数。因此,我建议您将模型合并到一个请求中; 请求内容不能绑定多个参数。 我已经尝试过了,但是出现了编译时错误。也许我错过了一些东西,因为我在这方面很新,所以如果你能给我任何例子以便更好地理解 请看这个问题:***.com/questions/44599041/… 你搞定了吗? 【参考方案1】:

来自this 来源:

不要将 [FromBody] 应用于每个操作方法的多个参数。一旦请求流被输入格式化程序读取,就不能再被读取以绑定其他 [FromBody] 参数。

【讨论】:

这是实际答案。您不能多次绑定 FromBody。使 FromBody 成为一个包含您需要的所有数据的类【参考方案2】:

请查看键中的 jquery POST 方法:值设置您的数据

function verifyRiderAppID() 

	$.post("/url ", 
			Parms: value
		,
		function (data, status) 
			if (status === 'success') 

			 else 
				//else logic
			
		);

【讨论】:

以上是关于无法将多个参数绑定到请求的内容的主要内容,如果未能解决你的问题,请参考以下文章

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

如何将参数绑定到未准备好的查询?

HTTP post请求中的多个参数不在Asp.net webApi 2.0中绑定

参数绑定

Spring MVC:将请求属性绑定到控制器方法参数

将多个参数绑定到mysqli查询中