2014-09-25 2 views
0

у меня есть этот частичный вид, который выглядит следующим образом:Уплотненный PartialView не освежающий

@model ComPost.Core.CommandsAndQueries.Contract.DataContract.FinalizeScreenDTO 

<div class="row"> 
    <p> 
    <table id="ProductTable"> 
     <tr><td>Wijzig Product</td><td><input type="checkbox" id="OverrideCheckox" /></td></tr> 
     <tr><td>Product</td><td>@Html.DropDownListFor(m => m.DepositProductId , new SelectList(Model.DepositProducts, "DepositProductId", "DepositProductName"),new{id="DepositProductSelect", disabled="disabled", style = "width: 500px;", onchange="CallChangefunc();"})</td></tr> 
     <tr><td>Reden wijziging</td><td><textarea disabled ="disabled" id="OverrideReason" class="CommentText" cols="150" rows="5">@Model.OverrideReason</textarea></td></tr> 
    </table> 
    </p> 

@{ 
    Html.RenderAction("DepositProductOrder", "Deposit", new { depositid = @Model.DepositId, depositproductid = @Model.DepositProductId }); 
} 

    <p> 
    <input type="submit" id="FinalizeButton" class="btn btn-default" Visible="false" data-url="@Url.Action("FinalizeDeposit", "Deposit")" data-overview="@Url.Action("Index", "Deposit")" value="Finalize" /> 
    </p> 
</div> 

В этом PartialView у меня есть еще один PartialView, которые должны быть оказаны этой линией:

@{ 
    Html.RenderAction("DepositProductOrder", "Deposit", new { depositid = @Model.DepositId, depositproductid = @Model.DepositProductId }); 
} 

вложенной PartialView содержит таблицу для отображения некоторой информации. Когда я выбираю новое значение в DropDownList, я перехожу к контроллеру и выполняю свое действие. Это прекрасно работает. Результат затем передается моему вложенному частичному просмотру.

Но результат не обновляется. На моем экране по-прежнему отображается информация, которая была получена, когда я впервые попал на страницу.

CallChangefunc выглядит следующим образом

function CallChangefunc() 
{ 
    //TODO : call the post for a Finalize. 
    var el = document.getElementById('DepositProductSelect'); 
    var url = "/Deposit/DepositProductOrder"; 
    var depositProductId = el.options[el.selectedIndex].value; 
    var depositId = $("#MainTabs").data("depositid"); 

    $.ajax({ 
     url: url, 
     type: 'POST', 
     data: { 
      depositId: depositId, 
      depositProductId: depositProductId, 
     }, 
     dataType: 'html', 
     success: function (result) { }, 
     error: function (x, t, e) { } 
    }); 
} 

Это код DepositProductOrder-действия на мой контроллер:

public PartialViewResult DepositProductOrder(int depositid, int depositproductid) 
{ 
    DepositProductOrderDTO depositProductOrderDTO = this.QueriesServiceAgent.Call(s => s.GetDepositProductOrder(depositid, depositproductid)); 

    return PartialView(depositProductOrderDTO); 
} 

Что мне не хватает?

+0

просто ли ваш 'действие DepositProductOrder' бьет или нет ??? –

+0

@ Kartikeya: The DepositProductOrder бьет. Так что это нормально. –

+1

убедитесь, что ваш запрос ajax возвращает правильный html и его успешный обратный вызов. Просто поставьте предупреждение и убедитесь в успехе и посмотрите, что там будет. –

ответ

1

Проблема в том, что вы ничего не делаете после успешного завершения ajax-вызова. Попробуйте добавить DIV, который облегает частичный вид, как показано ниже

<div id="divDepositProductOrder"> 
@{ 
    Html.RenderAction("DepositProductOrder", "Deposit", new { depositid = @Model.DepositId, depositproductid = @Model.DepositProductId }); 
} 
</div> 

затем обновить содержание divDepositProductOrder с HTML, возвращенного АЯКС вызова

success: function (result) { 
    $('#divDepositProductOrder').html(result); 
}, 
Смежные вопросы