Ajax和Jquery刷新MVC模型属性
你好 我遇到一个问题,在Ajax方法返回json后,MVC模型属性没有更新 我正在进行一个ajax调用,它从一个MVC操作结果方法返回json,该方法更新页面上的一些数据,但下面的一个特定属性是ajax调用,它似乎可以工作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
$(函数(){
//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);
}