Mam widok (Index.cshtml) z siatką (siatką Infragistics JQuery) z linkiem do obrazu. Jeśli użytkownik kliknie na ten link następująca funkcja jQuery będzie nazwane:Widok nie odświeżający po poście AJAX
function ConfirmSettingEnddateRemarkToYesterday(remarkID) {
//Some code...
//Call to action.
$.post("Home/SetEnddateRemarkToYesterday", { remarkID: remarkID }, function (result) {
//alert('Succes: ' + remarkID);
//window.location.reload();
//$('#remarksgrid').html(result);
});
}
wykomentowane widać alert dla siebie i 2 próby odświeżyć widok. Funkcja location.reload() działa, ale zasadniczo jest to zbyt duża praca dla przeglądarki. .html (wynik) powoduje umieszczenie całego pliku index.cshtml + Layout.cshtml w pliku div uwagi. To nie jest poprawne.
To działanie wywołuje (SetEnddateRemarkToYesterday):
public ActionResult SetEnddateRemarkToYesterday(int remarkID) {
//Some logic to persist the change to DB.
return RedirectToAction("Index");
}
To działanie przekierowuje do:
[HttpGet]
public ActionResult Index() {
//Some code to retrieve updated remarks.
//Remarks is pseudo for List<Of Remark>
return View(Remarks);
}
Jeśli nie robię window.location.reload po udana AJAX opublikować widok nigdy nie przeładuje. Jestem nowy w MVC, ale jestem pewien, że jest lepszy sposób na zrobienie tego. Nie rozumiem tutaj czegoś fundamentalnego. Być może szturchnięcie w dobrym kierunku? Z góry dziękuję.
lepiej, aby remarksgrid częściowy widok i zwróci częściowy widok wyniku w metodzie SetEnddateRemarkToYesterday. – ssilas777
@ ssilas777 Masz rację. Zdałem sobie sprawę, że dzień po tym, jak to opublikowałem, jest to rozwiązanie, do którego dążyłem. Dziękuję za odpowiedź. –