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,错误:无法绑定多个参数的主要内容,如果未能解决你的问题,请参考以下文章
当表单处于空闲状态时,ASP.NET MVC 操作参数未绑定