/ / ASP.NET MVC, utrzymywanie stanu modelu między żądaniami Ajax - asp.net-mvc, asp.net-ajax, cykl życia strony

ASP.NET MVC, utrzymywanie stanu modelu między żądaniami Ajax - asp.net-mvc, asp.net-ajax, cykl życia strony

problem: Podczas pierwszego żądania pełnej strony, mój kontroler wywołuje warstwę applicationServices (serwer proxy usług internetowych do mojej warstwy biznesowej) w celu zapełnienia kolekcji bieżących usług przechowywanych we własnej właściwości klasy podstawowej kontrolera. Zostanie to wyświetlone w widoku. Wszystko w kontekście tego kontrolera ma dostęp do "Kolekcji usług". Teraz, kiedy wykonuję kolejne wywołania tej samej metody działania za pośrednictwem wywołania AJAX, oczywiście umieszczam inną instancję tego kontrolera, co oznacza, że ​​moja kolekcja usług jest pusta.

Tak więc, poza ponownym pobraniem całej kolekcjijeszcze raz, gdzie miałbym przechowywać tę kolekcję, aby została zachowana między żądaniami ajax? Czy powinienem go utrzymywać jako oddzielny obiekt DomainModel, obiekt sesji? .... ponieważ ViewData nie działa dla mnie obv. Przepraszam za ignorancję MVC :)

Każda pomoc będzie bardzo mile widziana :)

Odpowiedzi:

2 dla odpowiedzi № 1

Sieć jest zasadniczo bezpaństwowcem i pomaga MVCmusisz zejść do metalu, to znaczy, że MVC nie próbuje zrobić czegoś stanowego, co nie jest w większości przypadków ścieżką starej ASP: Każda prośba jest prośbą o jej własność i nie powinna wiedzieć cokolwiek na temat każdego innego żądania, które zostało wykonane w przeszłości.

Uważam, że najłatwiej jest zejść właśnie tą drogą, ponieważ ma tendencję do pozostawania czystym, szybkim i pomaga w przestrzeganiu najlepszych praktyk, takich jak rozdzielanie spraw.

AJAX robi to o krok dalej: Idea AJAX polega na tym, że prostą operację "usuwania" można zaimplementować jako taką, tj. Wystarczy zatwierdzić i wykonać jedno bardzo małe zapytanie na warstwie trwałości. To już koniec. Nie musisz nawet przekazywać użytkownikowi zmodyfikowanej strony. Wystarczy prosty, odczytywalny maszynowo komunikat o powodzeniu / błędzie za pośrednictwem JSON.

Jeśli zaczniesz ciągnąć wiele usług dla małych żądań AJAX, naprawdę stracisz większość tego, co jest dobre dla.

Proponuję także, abyś nie przechowywał garściusługi w kontrolerze bazowym. Jest szansa, że ​​w przypadku większości wniosków będzie potrzebny tylko mały ich podzestaw. Najlepiej jest pobrać tylko te usługi, których absolutnie potrzebujesz.