2014-02-06 5 views
1

У меня есть частичный вид внутри моего основного родительского представления, который содержит таблицу, которую мне нужно обновить. Причина в частичном представлении заключается в том, что я могу обновить его без перезагрузки моего основного вида. Я не могу использовать форму здесь, потому что я внутри одного в своем родительском представлении.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 возвращается, мой родитель вид исчез, и все, что я вижу, это частично. Я предполагаю, что это имеет смысл, когда я возвращаю частичное представление, но как я могу просто обновить его внутри родителя?

+1

Вам понадобится какой-то на стороне клиента код. На каких условиях вам нужно обновляться? – Maess

+0

показать код для родительского представления – Miller

+0

Обновление только части страницы с данными с сервера требует javascript для выполнения. Вам нужно будет использовать запрос ajax. –

ответ

4

В вашем главном представлении Вот ваш Partial.

<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);   
    } 
+0

$ ('# partialContractTotalsDiv') -> $ ('# partialSummaryDiv')? – Miller

+0

Это хорошее место для вас, чтобы начать @ aw04. Обратите внимание, что это было бы в каком-то событии на стороне клиента (как в '$ (" # myElement "). Click (function() {/ * вызов ajax здесь * /});') –

+1

@Miller, скопировать и вставить ошибку , Сейчас исправлено – CSharper

0

В главной странице, поместите ваши парциальный в DIV:

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

В вашем частичном дать якорю идентификатор:

@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); 
} 
0

Попробуйте это:

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

В контроллере

public void DeleteCustomerDetail(int Id) 
{ 
      //Your code here 
} 
Смежные вопросы