Problem z buforowaniem podczas ładowania częściowych widoków do okien dialogowych JQuery
Wyobraź sobie prostą listę użytkowników z linkami „edytuj”. Kliknięcie „Edytuj” otwiera okno dialogowe ze szczegółami dla wybranego użytkownika. Okno „Szczegóły” to widok częściowy.
Mam problem z buforowaniem częściowych widoków podczas otwierania ich w oknach dialogowych JQuery.
Mój widok częściowy (Zauważ, że atrybut OutputCache jest jedną z rzeczy, które próbowałem rozwiązać w kwestii buforowania):
[HttpGet]
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
public PartialViewResult EditUser(int id)
{
var userList = userRepository.GetByRole(id);
return PartialView("EditUser",userList);
}
Powyższy PartialView jest wymagany i ładowany z następującej funkcji Javascript:
function editUserOpen(id) {
$.ajaxSetup({ ///// Another thing I tried to solve caching
cache: false
});
var url = "/User/PartialViewResult/" + id;
$('#user-wrap').empty().load(url, function () {
$("#dialog-edit-user").dialog({
title: "Edit User",
autoOpen: false,
height: 300,
width: 500,
modal: true
});
$('#dialog-edit-user').dialog("open");
});
}
Jak pokazano powyżej „dialog-edit-user” (wraz z „dialog-add-user” i „dialog-delete-user”) znajdują się wewnątrz Div-user-wrap w DOM.
Funkcjonalnie wszystko działa, ale kiedy otwieram okno dialogowe, anuluję, a następnie próbuję otwierać okna dialogowe dla innych użytkowników, dopóki strona nie zostanie odświeżona, okna dialogowe będą zawsze zawierały informacje z początkowo wyświetlanego okna dialogowego. Uznałem, że jest to problem z buforowaniem, ale zabrakło mi sposobów na jego rozwiązanie.
Chciałbym trzymać się z dala od $ .ajax ({cache: false;}). Html (content), jeśli to możliwe. Wydaje mi się, że jest dużo wolniejszy niż .load ().