在MVC3视图中使用AJAX更新字段

时间:2013-03-13 00:45:07

标签: javascript ajax asp.net-mvc

这是我的控制器方法。

    [HttpPost]
    public ActionResult CheckStock(int productId, short units)
    {

        Product model = db.Products.Single(x => x.Product_ID == productId);
        model.Units_In_Stock = units;
        db.ObjectStateManager.ChangeObjectState(model, EntityState.Modified);
        db.SaveChanges();
        db.Refresh(System.Data.Objects.RefreshMode.ClientWins, model);
        var newModel = db.Products.Single(x => x.Product_ID == productId);

        return View("Details", newModel);
    }

这是我的AJAX:

    <script src="/Scripts/jquery-1.5.1.min.js" 
    type="text/javascript"></script>
    <script type="text/javascript">
        $(function () {
            $(".UpdateProductId").click(function () {
                var unitsInStock = 123;
                var pId = $(this).attr("data-id");
                if (pId != '' || pId != null) {
                    $.post("/Product/CheckStock", { "productId": pId, "unitsInStock": unitsInStock },
                              function (data) {
                                  $('#units-in-stock').text(unitsInStock);
                              });
                }
                else {
                    alert("Product_ID is empty");
                }
            });
        }); 
    </script>

这是我的链接:

    <div>
        <a href="#" class="UpdateProductId" data-id="@Model.Product_ID">Update</a> 
    </div>

这是带有唯一受影响行的修剪下来的表格。

    <fieldset>
        <legend>Product</legend>
        <div class="display-label">
            <table>
                <tr><td>Units_In_Stock</td><td><div id="units-in-stock">@Html.DisplayFor(model => model.Units_In_Stock)</div></td></tr>
            </table>
        </div>
    </fieldset>

我没有收到任何错误,但是当我点击链接时除了#被添加到查询字符串之外什么也没发生。控制器中的CheckStock中的断点和AJAX方法中的断点未被击中。请帮忙。

1 个答案:

答案 0 :(得分:2)

您的密钥名称和CheckLog方法参数不一样,您的ajax请求中有unitsInStock但CheckLog方法中有units,请将其更改为匹配。