作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 RenderAction 在主视图(定价 View )内显示部分 View (购物车)
<% Html.RenderAction("Cart", "ShoppingCart"); %>
当用户在主视图上将商品添加到购物车时,我必须更新部分 View 以显示新添加的商品。这是我的部分 View 的代码:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Trl.ViewModels.Cart>" %>
<% foreach (var _hotel in Model.Hotels)
{ %>
Hotel Name: <%: _hotel.Name %> <br/>
Price: <%: _hotel.TotalPrice %>
<% } %>
上面用户控件中使用的“Trl.ViewModels.Cart”对象将包含新添加的项目,因为我使用 ASP.NET session 状态来保留购物车。如何从我的主视图刷新/重新加载此部分 View ,以便它可以显示新添加的项目?
最佳答案
好吧,我已经清楚地知道需要什么了。
我假设主要内容区域是通过 ajax 更新的。如果是这种情况,那么我的方法是通过 ajax 进行更新,并在 Controller 操作中返回包含侧边栏购物车的部分 View 。为此,您需要为包含购物车的 div 指定一个 ID,以便将其定位为更新站点。
言归正传,我的意思是一个快速的代码演示:
Controller :
public ActionResult Create(Cart item)
{
if (ModelState.IsValid)
{
// or could be added to session["cart"] etc..
_repository.Add(item);
var cartItems = _repository.Find(x => x.cartID = item.cartID);
return PartialView("CartMini", cartItems);
}
return new EmptyResult();
}
主视图(在右侧栏中 - 这将是最初定义部分 View 的位置):
<div id="miniCart"></div>
在页面的另一部分(半伪代码):
<script type="text/javascript">
function updateCart() {
var tdata = $(frm).serialize();
// or your data in the format that will be used ??
$.ajax({
type: "POST",
data: tdata,
url : '<%= Url.Action("Create", "Cart") %>',
dataType: "json",
success: function (result) { success(result); }
});
});
function success(result){
$("#miniCart").html(result);
}
</script>
这确实是所需要的基本内容。抱歉,这件事太仓促了,刚开始不久,电话就断了,现在必须走了:)。如果不清楚的话稍后再补充。
关于jquery - 如何从 MVC 中的主视图内部刷新/重新加载部分 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4409881/
我是一名优秀的程序员,十分优秀!