2012-03-03 51 views
0

我有這樣的:爲什麼我的ajax文章不能取代內容?

<div id="miniShoppingCartContainer"> 
     @Html.Action("MiniShoppingCart", "ShoppingCart") 
</div> 

其中MiniShoppingCart動作返回MiniShoppingCart.cshtml局部視圖的所有內容。

在這個局部視圖我增加了一個Ajax調用增加產品車的數量:

@using (Ajax.BeginForm("IncreaseProductQuantity", "ShoppingCart", new { shoppingCartItemId = item.Id }, new AjaxOptions { UpdateTargetId = "miniShoppingCartContainer", InsertionMode = InsertionMode.Replace })) 
{ 
    <li> 
     <input type="submit" class="btn-up" /> 
    </li> 
} 

它調用的方法:

public ActionResult IncreaseProductQuantity(int shoppingCartItemId) 
    { 
     //get shopping cart item 
     var cart = _workContext.CurrentCustomer.ShoppingCartItems 
      .Where(x => x.ShoppingCartType == ShoppingCartType.ShoppingCart).ToList(); 
     var sci = cart.Where(x => x.Id == shoppingCartItemId).FirstOrDefault(); 
     if (sci == null) 
     { 
      return RedirectToRoute("ShoppingCart"); 
     } 

     //update the cart item 
     _shoppingCartService.UpdateShoppingCartItem(_workContext.CurrentCustomer, 
           sci.Id, sci.Quantity + 1, true); 


     return MiniShoppingCart(); 
    } 

請注意,在方法結束時,我致電MiniShoppingCart ActionResult準備購物車並返回PartialView(如您在帖子開頭處看到的那樣)。

好,產品的更新正在發生細微但內容不刷新(或更換)...

能否請你指出我在哪裏錯了?

UPDATE

否則與Chrome開發了檢查。工具我覺得那樣做時,後一個錯誤:

POST http://localhost/ShoppingCart/IncreaseProductQuantity?shoppingCartItemId=11 500 (Internal Server Error) 
f.support.ajax.f.ajaxTransport.sendjquery-1.7.1.min.js:4 
f.extend.ajaxjquery-1.7.1.min.js:4 
ejquery.unobtrusive-ajax.min.js:5 
(anonymous function)jquery.unobtrusive-ajax.min.js:5 
f.event.dispatchjquery-1.7.1.min.js:3 
f.event.add.h.handle.ijquery-1.7.1.min.js:3 
2 

很奇怪猜測是該日誌的問題...基本上,如果我讓調試我可以看到它所有的操作,直到MiniShoppingCart()方法return PartialView(model); ...

+0

你有沒有包含在不顯眼的AJAX JS文件''在你的視圖/佈局? – nemesv 2012-03-03 09:27:35

+0

是的,我有這個包括:'' – 2012-03-03 09:30:52

+0

您應該檢查在瀏覽器的開發控制檯(IE/Chrome F12)或FireBug中,「IncreaseProductQuantity」正在返回。也許你會看到提示什麼不起作用。 – nemesv 2012-03-03 09:42:59

回答

0

發現問題:

>The partial view 'IncreaseProductQuantity' was not found or no view engine supports the searched locations. 

所以基本上,從IncreaseProductQuantity方法做return MiniShoppingCart();不會自動返回MiniShoppingCart局部視圖,但仍然會嘗試返回IncreaseProductQuantity部分視圖當然不存在。

因此,我已經做了這樣的:

var model = PrepareMiniShoppingCartModel(); 
return PartialView("MiniShoppingCart", model); 
相關問題