MVC Web API,错误:无法绑定多个参数

Posted

技术标签:

【中文标题】MVC Web API,错误:无法绑定多个参数【英文标题】:MVC Web API, Error: Can't bind multiple parameters 【发布时间】:2017-11-19 19:25:17 【问题描述】:

传递参数时出错,

“不能绑定多个参数”

这是我的代码

[HttpPost]
public IHttpActionResult GenerateToken([FromBody]string userName, [FromBody]string password)

    //...

阿贾克斯:

$.ajax(
    cache: false,
    url: 'http://localhost:14980/api/token/GenerateToken',
    type: 'POST',
    contentType: "application/json; charset=utf-8",
    data:  userName: "userName",password:"password" ,

    success: function (response) 
    ,

    error: function (jqXhr, textStatus, errorThrown) 

        console.log(jqXhr.responseText);
        alert(textStatus + ": " + errorThrown + ": " + jqXhr.responseText + "  " + jqXhr.status);
    ,
    complete: function (jqXhr) 

    ,
)

【问题讨论】:

WebAPI Multiple Put/Post parameters的可能重复 亲爱的保罗。我刚刚检查了提到的问题,这不是重复的,因为该问题与我当前的问题不同。谢谢 您使用的是 Web API 1 还是 2? 【参考方案1】:

参考:Parameter Binding in ASP.NET Web API - Using [FromBody]

最多允许从消息体中读取一个参数。所以 这不起作用

// Caution: Will not work!    
public HttpResponseMessage Post([FromBody] int id, [FromBody] string name)  ... 

此规则的原因是请求正文可能存储在 只能读取一次的非缓冲流。

强调我的

话虽如此。您需要创建一个模型来存储预期的聚合数据。

public class AuthModel 
    public string userName  get; set; 
    public string password  get; set; 

然后更新动作以期望该模型在正文中

[HttpPost]
public IHttpActionResult GenerateToken([FromBody] AuthModel model) 
    string userName = model.userName;
    string password = model.password;
    //...

确保正确发送有效负载

var model =  userName: "userName", password: "password" ;
$.ajax(
    cache: false,
    url: 'http://localhost:14980/api/token/GenerateToken',
    type: 'POST',
    contentType: "application/json; charset=utf-8",
    data: JSON.stringify(model),
    success: function (response) 
    ,

    error: function (jqXhr, textStatus, errorThrown) 

        console.log(jqXhr.responseText);
        alert(textStatus + ": " + errorThrown + ": " + jqXhr.responseText + "  " + jqXhr.status);
    ,
    complete: function (jqXhr) 

    ,
)

【讨论】:

以上是关于MVC Web API,错误:无法绑定多个参数的主要内容,如果未能解决你的问题,请参考以下文章

Web API 入门三(参数绑定)

mvc web api 关于post参数怎么接收,求教

当表单处于空闲状态时,ASP.NET MVC 操作参数未绑定

带有多个逗号分隔参数的C# Web API GET [关闭]。

细说 Web API参数绑定和模型绑定

如何使用 MVC Web Api GET 将对象作为参数传递