Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax和Jquery刷新MVC模型属性_Jquery_Ajax_Asp.net Mvc - Fatal编程技术网

Ajax和Jquery刷新MVC模型属性

Ajax和Jquery刷新MVC模型属性,jquery,ajax,asp.net-mvc,Jquery,Ajax,Asp.net Mvc,你好 我遇到一个问题,在Ajax方法返回json后,MVC模型属性没有更新 我正在进行一个ajax调用,它从一个MVC操作结果方法返回json,该方法更新页面上的一些数据,但下面的一个特定属性是ajax调用,它似乎可以工作 $(函数(){ //Document.ready->链接删除事件处理程序 $(“.RemoveLink”)。单击(函数(){ //从链接中获取id var productToDelete=$(this.attr(“数据id”); var PostToUrl=$(this.at

你好

我遇到一个问题,在Ajax方法返回json后,MVC模型属性没有更新

我正在进行一个ajax调用,它从一个MVC操作结果方法返回json,该方法更新页面上的一些数据,但下面的一个特定属性是ajax调用,它似乎可以工作

$(函数(){
//Document.ready->链接删除事件处理程序
$(“.RemoveLink”)。单击(函数(){
//从链接中获取id
var productToDelete=$(this.attr(“数据id”);
var PostToUrl=$(this.attr(“数据url”);
如果(productToDelete!=''){
//执行ajax post
$.post(PostToUrl{
“id”:productToDelete
},
功能(数据){
//成功的请求到达这里
//更新页面元素
如果(data.ItemCount==0){
$(“#行-”+data.DeleteId).fadeOut('slow');
}否则{
$(“#项计数-”+data.DeleteId).text(data.ItemCount);
}
$(“#购物车总数”).text(data.cartotal);
$(“#更新消息”).text(data.message);
$(“#购物车状态”).text('cart('+data.CartCount+');
});
}
});
});
问题是它会更新#cart total、#update消息并按其应该的方式删除行,但对于#item count,它不会在执行该函数后更改val,它会从数据库中删除该项,但不会在页面上反映它,除非我刷新页面本身。我想知道是否有一种方法可以反映出价值。与页面绑定的模型代码如下所示

<table id="cart-summary">
<tr>
    <th>
        Order Code ID
    </th>
    <th>
        Product Name
    </th>
    <th>
        Price (each)
    </th>
    <th>
        Quantity
    </th>
    <th></th>
</tr>
@foreach (var item in Model.CartItems)
{
    <tr id="row-@item.OrderCodeID">
        <td>
           @item.ProductAttribute.OrderCodeID
        </td>
        <td>
            @Html.ActionLink(item.ProductAttribute.Product.ProductName, "ProductDetails", "Store", new { productId = item.ProductAttribute.ProductID }, null)
        </td>
        <td>
            @item.ProductAttribute.Product.ProductPrice
        </td>
        <td id="item-count-@item.Quantity">
           @item.Quantity
        </td>
        <td>
            <a href="#" class="RemoveLink" data-id="@item.OrderCodeID" data-url='@Url.Content("~/ShoppingCart/RemoveFromCart")'>Remove from cart</a>
        </td>
    </tr>
}
<tr>
    <td>
        Total
    </td>
    <td>
    </td>
    <td>
    </td>
    <td id="cart-total">
        @Model.CartTotal
    </td>
</tr>

模板中的@item.Quantity和JS脚本中的data.DeleteIddata.DeleteId似乎不一样。请在之前检查它们。@xAqweRx,非常感谢您的建议,我能够看到我的问题来自何处,谢谢。不需要
id
属性。您可以使用
var row=$(this.nexist('tr')
获取表行和
行.children('td').eq(3).text(data.ItemCount)以设置文本
// AJAX: /ShoppingCArt/RemoveFromCart/
    [HttpPost]
    public ActionResult RemoveFromCart(int id)
    {
        // Remove the item from the cart
        var cart = ShoppingCart.GetCart(db, this.HttpContext);

        // Get the name of the product to display the confirmation
        string productName = db.ShoppingCartItems.Single(item => item.OrderCodeID == id).ProductAttribute.Product.ProductName;

        // Remove from the cart
        int itemCount = cart.RemoveFromCart(id);

        db.SaveChanges();

        string removed = (itemCount > 0) ? " 1 copy of " : string.Empty;

        // Display the confirmation message
        var results = new ShoppingCartRemoveViewModel
        {
            Message = Server.HtmlEncode(productName) + " has been removed from your shopping cart.",
            CartTotal = cart.GetTotal(),
            CartCount = cart.GetCount(),
            ItemCount = itemCount,
            DeleteId = id
        };

        return Json(results);
    }