MVC Web API, Error: Can't bind multiple parameters

后端 未结 1 1491
走了就别回头了
走了就别回头了 2021-01-07 20:22

I get error when passing the parameters,

\"Can\'t bind multiple parameters\"

here is my code

[         


        
相关标签:
1条回答
  • 2021-01-07 21:01

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

    At most one parameter is allowed to read from the message body. So this will not work:

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

    The reason for this rule is that the request body might be stored in a non-buffered stream that can only be read once.

    emphasis mine

    That being said. You need create a model to store the expected aggregated data.

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

    and then update action to expect that model in the body

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

    making sure to send the payload properly

    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) {
    
        },
    })
    
    0 讨论(0)
提交回复
热议问题