Почему мой пост Ajax не заменяет контент? - PullRequest
0 голосов
/ 03 марта 2012

У меня есть это:

 <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 (как вы видите в начале сообщения).

Что ж, обновление продукта происходит нормально, но содержимое не обновляется (или не заменяется) ...

Можете ли вы указать, где я не прав?

ОБНОВЛЕНИЕ :

Проверка Chrome Dev.Инструменты Я вижу ошибку при выполнении поста:

    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

Странно догадываться, в чем проблема из этого журнала ... В основном, если я делаю отладку, я вижу, что он выполняет все операции до return PartialView(model); из MiniShoppingCart() метод ...

1 Ответ

0 голосов
/ 03 марта 2012

Найдена проблема:

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

Таким образом, метод return MiniShoppingCart(); из IncreaseProductQuantity автоматически не возвращает частичное представление MiniShoppingCart, но все равно будет пытаться вернуть IncreaseProductQuantity частичное представление, которое, конечно, не существует.

Следовательно, я сделал это как:

var model = PrepareMiniShoppingCartModel();
return PartialView("MiniShoppingCart", model);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...