div中局部视图的完全休息操作-MVC 4&;JQuery
我有一个我正在开发的web应用程序,它使用局部视图来呈现愿望列表。我希望此PartialView在主页内的div中呈现。 愿望列表的内容保存在HttpContext.Profile对象中,以便持久化 在部分视图控制器中,有添加和删除功能,理想情况下,一旦执行这些功能,就会触发索引操作的刷新 我能够在div中呈现部分视图,在执行任何操作时,尽管整个页面被重定向到结果页面,而不是重新加载div,但我不知道如何实现这一点 控制器:div中局部视图的完全休息操作-MVC 4&;JQuery,jquery,asp.net-mvc,Jquery,Asp.net Mvc,我有一个我正在开发的web应用程序,它使用局部视图来呈现愿望列表。我希望此PartialView在主页内的div中呈现。 愿望列表的内容保存在HttpContext.Profile对象中,以便持久化 在部分视图控制器中,有添加和删除功能,理想情况下,一旦执行这些功能,就会触发索引操作的刷新 我能够在div中呈现部分视图,在执行任何操作时,尽管整个页面被重定向到结果页面,而不是重新加载div,但我不知道如何实现这一点 控制器: public ActionResult Index() { v
public ActionResult Index()
{
var wish = WishListForm;
//Perform lookup of any object id's located in the profile.
if (wish.Properties.Any())
{
viewModel.Items = Nav.GetItems(wish.ItemIds).ToList();
}
return PartialView("RequestFormPartial", viewModel);
}
public ActionResult AddItem(int itemId)
{
var wish = WishListForm;
if (!wish.Properties.Contains(itemId))
{
wish.Properties.Add(itemId);
}
WishListForm = wish;
return RedirectToAction("Index");
}
public ActionResult RemoveItem(int itemId)
{
var wish = WishListForm;
if (wish.Properties.Contains(itemId))
{
wish.Properties.Remove(itemId);
}
WishListForm = wish;
return RedirectToAction("Index");
}
public ActionResult RemoveAllItems()
{
var wish = WishListForm;
wish.Properties.RemoveAll(x => true);
WishListForm = wish;
return RedirectToAction("Index");
}
}
Html
愿望者
<script>
$('#wishListTest').click(function () {
$.ajax({
type: 'POST',
url: '@Url.Action("Index", "MyData")',
success: function (data) {
$("#wishlist").html(data);
}
});
});
</script>
$('#wishListTest')。单击(函数(){
$.ajax({
键入:“POST”,
url:'@url.Action(“索引”,“我的数据”)',
成功:功能(数据){
$(“#愿望列表”).html(数据);
}
});
});
我想是重定向操作必须改变?有什么想法吗?您可能只想重新加载部分视图。不是整页。如果Add请求来自ajax调用,那么可以返回部分视图的内容 因此,让我们对action方法进行一个小的更新,以检查该调用是否是ajax调用
[HttpPost]
public ActionResult AddItem(int itemId)
{
var wish = WishListForm();
if (!wish.Properties.Contains(itemId))
{
wish.Properties.Add(itemId);
}
WishListForm = wish;
if(Request.IsAjaxRequest())
{
//return the viewmodel with Items loaded
var vm=new YourWishListViewModel();
if (wish.Properties.Any())
{
vm.Items = Nav.GetItems(wish.ItemIds).ToList();
}
return PartialView("RequestFormPartial", vm);
}
else
{
return RedirectToAction("Index");
}
}
还要确保防止按钮单击的默认行为(它可能会提交表单)。您可以使用preventDefault
方法来执行此操作
$('#wishListTest').click(function (e) {
e.preventDefault();
// your ajax posting code goes here
});
您必须返回相同的PartialView updated,然后在ajax调用结束后填充whishlist@公民卡奇:不客气!很高兴我能帮忙:)