MVC — частичный вид продолжает отображать один и тот же контент

В настоящее время я занимаюсь созданием приложения MVC, это просто большой CRUD-инструмент для содержимого базы данных. Для небольших таблиц, которые используются для ограничения некоторых вариантов (страны, категории и тому подобное), я создал 1 страницу, которая загружает запрошенную таблицу и позволяет пользователю добавлять/удалять/редактировать свойства, используя только вызовы Ajax.

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

public PartialViewResult OpenConfig(string SelectID)
{
    using (DBconnection db = new DBconnection())
    {
        switch (SelectID)
        {
            case "---":
                return null;
            case "1":
                var countries = (from x in db.tbl_CountriesSet select x).ToList();
                return PartialView("Countries", countries);
            case "2":
                var supplierstatus = (from x in db.tbl_SupplierStatusSet select x).ToList();
                return PartialView("Supplierstatus", supplierstatus);
            case "3": .....
        }
    }
}

Вот где становится интересно. Предположим, я открываю окно «Страны», оно загружается правильно, я могу добавить/редактировать/удалить страну. Эти записи обновляются на странице с помощью jQuery, и одновременно используется вызов Ajax для обновления базы данных. Оба они работают нормально, обновляется и база данных, и страница. Я могу продолжать работать, и все изменения отражаются как на странице, так и в базе данных, проблемы начинаются при перезагрузке частичного представления.

Когда я выбираю значение «Страны» в раскрывающемся списке и снова отправляю его, программа просто пропускает метод, показанный выше, и отображает то же частичное представление, которое было показано при первом запросе списка. Я устанавливаю точку останова в методе, если я загружаю что-то, что я не загрузил до того, как он сработает, но не для страниц, которые я уже запросил. В Firefox это работает, и частичное представление обновляется (и срабатывает точка останова), но в Internet Explorer мой контроллер полностью игнорируется и продолжает отображать ту же страницу (даже когда я перехожу на совершенно другую страницу, а затем возвращаюсь назад). на страницу настроек).

Может ли кто-нибудь сказать мне, как я могу указать IE явно перезагрузить частичное представление, содержащее текущее содержимое базы данных?


person Flater    schedule 23.11.2011    source источник


Ответы (2)


Кэш браузера работает. Он возвращает вам кешированные результаты.

Используйте добавление текущего значения даты к URL-адресу, чтобы разрешить загрузку новых результатов с веб-сервера:

$('#container').load("http://mysite/myview/?" + new Date().getTime(), function () { });
person Samich    schedule 23.11.2011

Помимо функций контроллера, попробуйте:

[OutputCache(Duration = 0)]
person Ghost    schedule 23.11.2011