MVC 4刷新局部视图

时间:2014-02-06 16:31:20

标签: asp.net-mvc asp.net-mvc-4

我的主视图中包含一个部分视图,其中包含我需要更新的表。它在局部视图中的原因是我可以在不重新加载主视图的情况下更新它。我不能在这里使用表单,因为我在父视图中的一个表单。

部分视图

@model IList<ItemViewModel>

@Html.ActionLink("Add Item", "AddItem", "Home", new { model = Model }, null)

<table>
    ...
    @{foreach (var item in Model)
        //add table row
    }
    ....
</table>

控制器:

public ActionResult AddItem(IList<ItemViewModel> model)
{
    model.Add(...);
    return View("_PartialView", model);
    //also tried return PartialView(...)
}

一切都适用于大部分但是当我的ActionResult返回时,我的父视图消失了,我看到的只是部分视图。我想当我返回局部视图时这是有道理的,但我如何在父视图中刷新它?

3 个答案:

答案 0 :(得分:5)

在主视图中这是您的偏爱。

<div id="partialSummaryDiv">@{Html.RenderAction("GetSummary", "Order");}</div>

在某些情况下,您将进行ajax通话。

$.ajax({
    url: "/Order/GetContractTotals",
    type: "POST",
    success: function (result) {
         // refreshes partial view
        $('#partialSummaryDiv').html(result);
    }
});

控制器

[HttpPost]
public ActionResult GetContractTotals()
    {
       // blah blah
        return PartialView("_OrderContractTotals", octvm);        
    }

答案 1 :(得分:1)

试试这个:

   $.ajax({
            url: "/Admin/DeleteCustomerDetail",
            data: { "id": id },
            success: function (result) {
                $("#CustomerPartial").load("/Admin/_partialCustomers/", { id: DealerId });
            }
        });

在控制器

public void DeleteCustomerDetail(int Id)
{
           //Your code here
}

答案 2 :(得分:0)

在主视图中,将您的部分放入div:

  <div id='additemDiv'>
        // partial goes here
    </div>

在你的部分中给锚一个id:

@model IList<ItemViewModel>

<a href='javascript:void(0)' id='addItemLink'>Add Item </a>

<table>
    ...
    @{foreach (var item in Model)
        //add table row
    }
    ....
</table>

您需要链接的点击事件:

$(#'addItemLink').on('click', function(){
     $.get('your url', function(data){
        $('#additemDiv').html(data);
     })
});

你的行动:

public ActionResult AddItem(IList<ItemViewModel> model)
{
    model.Add(...);
    return PartialView(model);
}