2013-03-13 83 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