MVC - сохранить результат модели для использования в ajax-методе без передачи через JSON? - PullRequest
0 голосов
/ 17 сентября 2018

Долгое время скрывался первый раз, так что, эй!

TL: DR - как мне сохранить значение от исходного контроллера загрузки страниц до метода ajax, не передавая его как объект json как часть запроса ajax? И я не могу использовать сессию []!

Backstory - я работаю над функцией поиска фильтра, которая возвращает большой список объектов при начальной загрузке страницы, сгенерированный из вызова базы данных, и заполняет Model.FullResults.

Чтобы отфильтровать результаты, а не продолжать выполнять больше вызовов базы данных при каждом нажатии фильтра, я просто фильтрую результаты с помощью linq в методе AJAX, например:

var fullResults = @Html.Raw(Json.Encode(Model.FullResults));
var obj = {
            //filter tickboxes statuses etc are here
            fullResults: fullResults
        }
var jqxhr = $.ajax({
            //urls etc removed for clarity 
            data: JSON.stringify(obj),
            success: function (response) {
                //stuff
                }
            }

        });

Что отлично работает для небольших значений Model.FullResults. Однако, если Model.FullResults довольно большой (то есть на моей главной странице поиска), это большой объем данных, которые каждый раз передаются через ajax, и единственная причина, по которой я даже передаю его таким образом, это просто для Я не знаю, как еще я могу «сохранить» эти данные от исходного действия контроллера и при этом использовать их для использования метода ajax.

Хранение Model.FullResults в Session было недолгой мыслью, но есть большая вероятность, что люди откроют несколько вкладок, попавших в один и тот же контроллер, что сделает сессию устаревшей. Нечто подобное Viewdata было бы идеальным, но я, конечно, не могу получить к нему доступ в методе ajax

Так, как бы я сохранил это значение для использования в методе ajax? Должен ли я прибегнуть к другому вызову базы данных ИЛИ передать его в метод ajax? Должен быть какой-то способ его сохранить?

Заранее спасибо вам полезная связка! :)

1 Ответ

0 голосов
/ 18 сентября 2018

Вы можете использовать memoryCache для сохранения большого объема данных. Проблема Similer была со мной, где я должен прочитать данные из CSV-файла и пройти через веб-API. Каждый раз чтение данных из текста не было хорошей идеей, поэтому я сохранял данные в кэш-памяти и извлекал записи из memoryCache, чтобы избежать чтения из потока. Простое демо показано на моей учетной записи GitHub. Вы можете связать его. https://github.com/abhee235/SimpleRestfulAPI/tree/master/DataProvider

Примечание. Проект не оптимизирован с точки зрения производительности. Это просто демо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...