2015-05-11 4 views
0


У меня очень похожая проблема на этот пост ...
Webgrid not refreshing after delete MVC
Все, что я пытаюсь, то WebGrid не обновляется/обновляется после редактирования встроенного/удаление хотя ViewModel содержит правильные данные до того, как View показан ...WebGrid в Razor View не обновляется/обновляется после RedirectToAction после POST

Внутри контроллера:

public ActionResult AddTermin(int? id, int? ser) 
{ 
    ... 
    viewModel = ... //contains the correct (=updated) data 
    return View(viewModel); //contains the correct (=updated) data 
} 

Внутри Вид "AddTermin.cshtml":

@{ 
    var data = new List<Appointment>(); 
    if (Model != null && Model.RecurringAppointments != null) 
    { 
     data = Model.RecurringAppointments.Appointments; //contains the correct (=updated) data 
    } 
    var grid = new WebGrid(source: data, rowsPerPage: 10); //contains the correct (=updated) data 
} 

... 

@grid.GetHtml(...) //shows wrong (=old/previous/cached) data - ??? 

я добавил следующую запись в web.config уже ...

<system.web> 
    <caching> 
     <outputCache enableOutputCache="false" /> 
    </caching> 
</system.web> 

Я также попытался "[OutputCache (длительность = 0)]" уже.

И я также пробовал "jQuery.ajaxSetup ({cache: false});".

И я также пробовал «ModelState.Clear();» уже. Но ничего не работает.

Как я могу заставить WebGrid показать обновленные данные? У кого-то есть идея?
Большое спасибо заранее!

ответ

1

Я мог бы решить проблему сейчас, я должен упомянуть, что я использую AJAX POST. Но так как действие в контроллере было вызвано AJAX POST успешно, и поскольку после RedirectToAction было успешно перенаправлено действие AddTermin, я не хотел верить, что POST AJAX может быть причиной того, почему WebGrid не является обновлено. Но в этом причина. Это решение помогло мне: View not refreshing after AJAX post

Мое решение выглядит, как это сейчас ... Вместо "RedirectToAction", я использую сейчас:

[HttpPost] 
public ActionResult UpdateAppointment(Appointment appointment) 
{ 
    ... 
    //old: 
    //return RedirectToAction("AddTermin"); 
    //new: 
    var redirectUrl = new UrlHelper(Request.RequestContext).Action("AddTermin", "Veranstaltung"); 
    return Json(new { Url = redirectUrl }); 
} 

И в View "AddTermin.cshtml":

$(function() { 
    $('.saveApp').on('click', function() { 
     ... 
     var Appointment = { ... }; 
     $.ajax({ 
      url: '/Veranstaltung/UpdateAppointment', 
      data: JSON.stringify(Appointment), 
      type: 'POST', 
      contentType: 'application/json; charset=utf-8', 
      success: function (result) { 
       window.location.href = result.Url; 
      }, 
      error: function (errorThrown) { 
       ... 
      } 
     }); 
    }); 
}) 

Это прекрасно работает для меня.