Najpierw z bazy wyciągamy wszystkie samochody, a później (jeśli przez POST przekażemy frazę wyszukiwania) to jeszcze raz odwołujemy się do bazy i wybieramy tym razem auto konkretnego modelu i marki. Wydaje mi się, że powinno być albo jedno albo drugie (odpowiednia konstrukcja if-else). Czy może takie "zapytanie" nie jest jednoznaczne z odwołaniem się do bazy danych? A odwołanie odbywa się dopiero przy zwracaniu widoku return.View....?
Odpytanie bazy danych odbywa się dopiero w momencie wywołania cars.ToList()
. Niemniej jednak ja w takiej sytuacji raczej użyłbym jakiegoś if-else, żeby wyraźnie było widać, że rozróżniam dwa zachowania w kodzie, a nie "nadpisuję" jedną definicję cars
inną.
Poza tym, ten blog kłamie chociażby tutaj:
Wysyłając formularz metodą GET (method=”get”), dane są doklejane do adresu URL, np. www.jakasstrona.pl?imie=Lukasz&wiek=99, każdy może podejrzeć i podmienić z łatwością te dane. Używając natomiast metody POST, ukrywamy dane, których teoretycznie nie da się podmienić, a przesyłaną za pomocą globalnej tablicy.
Przed czym on chce zabezpieczać? Żeby użytkownik sobie przypadkiem ręcznie nie wpisał parametrów wyszukiwania? To jest chore!
A także tutaj:
Warto dodać, że obie akcje Index , są obsługiwane przez jeden widok.
Nieprawda, akcje są obsługiwane przez jeden kontroler. Widok jest efektem wywołania jednej z nich.
I promuje złe praktyki:
- nazywanie zmiennych wielką literą;
- mieszanie nazewnictwa polskiego i angielskiego;
- niepoprawne używanie HTTP post - to służy do zapisu danych, wyszukiwanie ze względów praktycznych powinno odbywać się getem.
Generalnie jego autor sprawia wrażenie bycia jakimś newbie, który coś tam już zlepił ze StackOverflow i całkiem nieźle idzie mu już programowanie przez koincydencję. Niestety wpadł na pomysł dzielenia się swoimi przemyśleniami ze światem, a Ty miałeś nieszczęście w to wdepnąć. :(
Druga sprawa, tu jest wyszukiwanie po modelu i marce. Co jeśli mamy "wyszukiwanie zaawansowane" i pól jest kilkanaście (np. cena od do, rocznik od do, pojemność silnika itd itd.) - czy tak samo buduje się zapytanie w LINQ i czy to na dłuższą metę "nie zabije" bazy danych (tak złożone zapytania)? Gdzieś czytałem, że powinno się "zapytywać bazę" tylko o pola/wartości które użytkownik w danym momencie wpisze w wyszukiwarce, a nie wszystkie.
No tak, ale on nie pobiera wszystkich rekordów tylko je filtruje. To akurat jedyna niespieprzona rzecz znajdująca się pod tym linkiem.