asp.net中出现错误500内部服务器错误

时间:2018-01-12 14:20:39

标签: jquery asp.net ajax asp.net-web-api asp.net-web-api2

我正在编写一个asp.net应用程序,我正在尝试使用jquery ajax发布web api2控制器方法的发布请求。这样做会导致错误500内部服务器错误。 这是jquery代码

function reload(quantity, cartItemId) {
        $.ajax({
            url: "/api/user/UpdateCart",
            method: "POST",

            data: { quantity: quantity, cartItemId:cartItemId },
            success: function() {
              //  window.location.href = "/user/ViewCart";
            }

    });
    }

    function addItem(cartItemId) {
        var quantity = parseInt(document.getElementById("txt-box-" + cartItemId).value);
        quantity++;
        document.getElementById("txt-box-" + cartItemId).value = quantity;
        reload(quantity,cartItemId);
    }

在我的web api 2控制器中,我有以下代码

    [AllowAnonymous]
    [HttpPost]
    public IHttpActionResult UpdateCart([FromBody]int quantity,[FromBody]int cartItemId)
    {
        var cartItemInDb = _unitOfWork.CartItemRepository.Read(cartItemId);
        cartItemInDb.Quantity = quantity;
        _unitOfWork.Complete();

        return Ok();
    }

1 个答案:

答案 0 :(得分:1)

我不认为webapi允许多个frombody参数。当我尝试使用您的代码时,我收到了此错误 - "无法将多个参数('数量'和' cartItemId')绑定到请求中内容。&#34 ;.当存在绑定问题时,您的函数将不会在visual studio中被命中,因为它将从管道本身返回。

另外,根据设计,您可以拥有数量和cartItemId并更改您的代码如下:

控制器代码:

    [AllowAnonymous]
    [HttpPost]
    [Route("api/user/UpdateCart")]
    public IHttpActionResult UpdateCart([FromBody]CartDetails cartDetails)
    {
        Console.WriteLine(cartDetails.cartItemId);
        Console.WriteLine(cartDetails.quantity); // Your code instead of Console.WriteLine();

        return Ok();
    }

类:

public class CartDetails
{
    public int quantity;
    public int cartItemId;
}
用javascript调用ajax:

        $.ajax({

        url: "http://localhost:49946/api/user/UpdateCart",
        method: "POST",
        contentType: "application/json",
        data: JSON.stringify(
            {
                quantity: 12, cartItemId: 109
        }),
        success: function (result) {
            console.log("SUCESS: " + result);
        },
        error: function (data) {
            console.log("error: " + data.responseText);
        }
    });