2013-03-13 43 views
2

这是我的控制器方法。在MVC3视图中使用AJAX更新字段

[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方法中的断点没有被击中。请帮忙。

回答

2

您的钥匙名称和CheckStockmethod参数不一样,您的ajax请求中有unitsInStock,但您的CheckStock方法中有units,请将它们更改为匹配。

+0

大声笑,我不知道那个警告。谢谢!。我会在6分钟内为你添加正确的:)。 – 2013-03-13 00:53:29