Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.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
div中局部视图的完全休息操作-MVC 4&;JQuery_Jquery_Asp.net Mvc - Fatal编程技术网

div中局部视图的完全休息操作-MVC 4&;JQuery

div中局部视图的完全休息操作-MVC 4&;JQuery,jquery,asp.net-mvc,Jquery,Asp.net Mvc,我有一个我正在开发的web应用程序,它使用局部视图来呈现愿望列表。我希望此PartialView在主页内的div中呈现。 愿望列表的内容保存在HttpContext.Profile对象中,以便持久化 在部分视图控制器中,有添加和删除功能,理想情况下,一旦执行这些功能,就会触发索引操作的刷新 我能够在div中呈现部分视图,在执行任何操作时,尽管整个页面被重定向到结果页面,而不是重新加载div,但我不知道如何实现这一点 控制器: public ActionResult Index() { v

我有一个我正在开发的web应用程序,它使用局部视图来呈现愿望列表。我希望此PartialView在主页内的div中呈现。 愿望列表的内容保存在HttpContext.Profile对象中,以便持久化

在部分视图控制器中,有添加和删除功能,理想情况下,一旦执行这些功能,就会触发索引操作的刷新

我能够在div中呈现部分视图,在执行任何操作时,尽管整个页面被重定向到结果页面,而不是重新加载div,但我不知道如何实现这一点

控制器:

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@公民卡奇:不客气!很高兴我能帮忙:)