CRUD ASP.NET Core MCV

Wstęp

W dzisiejszym odcinku zajmiemy się stworzeniem pełnej funkcjonalności obszaru biznesowego. W IT mówimy na to CRUD. Zapewni nam to dokonywanie podstawowych operacji na modelu danych.

Co to jest CRUD

Skrót CRUD pochodzi od słów CREATE, READ, UPDATE, DELETE, czyli opisuje 4 podstawowe operacje, które możemy wykonać na tabeli, albo szerzej mówiąc w obszarze biznesowym. W naszym przypadku jeśli mamy tabelę WorkItems, to możemy dodać nowy rekord do tabeli, możemy odczytać listę obiektów z tabeli, możemy dokonać aktualizacji rekordu w tabeli i możemy usunąć wybrany rekord. Daje nam to możliwość pełnej manipulacji danymi oraz ich przeglądanie.

Generowanie kontrolera

Nasz CRUD będzie wygenerowany automatycznie przez Visual Studio. Użyjemy kreatora Kontrolera MVC bazującego na modelu Entity Framework. W poprzedniej odcinku stworzyliśmy model danych z użyciem Entity Framework, dzięki temu możemy go teraz wykorzystać. Na początek wybieramy klasę modelu, następnie wybieramy klasę z kontekstem. Wybieramy plik z układem strony i na końcu podajemy nazwę kontrolera. W naszym przypadku – WorkItemsController. Visual Studio automatycznie wygeneruje nam kontroler oraz widoki dla modelu WorkItems. Działa to na tyle kompleksowo, że bez problemu możemy użyć takiego CRUD do wygenerowania prostego obszaru biznesowego. W przypadku prostych aplikacji możemy całkowicie oprzeć się na tym mechanizmie, ponieważ taka aplikacja będzie działała prawidłowo. Dodatkowo warto przejrzeć wygenerowany kod ponieważ może on być inspiracją do metod tworzenie stron w technologii ASP.NET.

Czym się różni metoda GET od POST

Część metod w kontrolerze posiada dwie wersje np.: Create lub Edit. Pierwsza metoda jest to metoda typu GET (każda metoda domyślnie jest typu GET). Jest ona wywoływana, kiedy otwieramy widok np. do tworzenia nowego rekordu. Możemy w tej metodzie zainicjalizować formularz, doczytać jakieś pomocnicze dane, słowniki itp. Druga metoda to POST. Ta metoda jest wywoływana, kiedy klikniemy na formularzu przycisk Zapisz albo Utwórz. Wtedy dane z formularza są przesyłane za pomocą POSTA i trafiają do tej drugiej metody i następuje tu aktualizacja danych poprzez kontekst.

BIND

W kodzie możemy zobaczyć zabezpieczenie formularza poprzez określenie, które pola będą przesyłane do metody, służy do tego adnotacja [Bind] gdzie przed obiektem modelu danych podajemy listę pól, która będzie przesyłana do metody. Inne pola nie będą przesyłane. Nawet jeśli użytkownik użyje klienta innego niż przeglądarka internetowa np. Postman i ręcznie doda w formularzu pola, które znajdują się w bazie danych, ale nie zostały umieszczone na formularzu. W takiej sytuacji mógłby zmienić pola, które nie powinny być zmieniane.

ValidateAntiForgeryToken

W kodzie widzimy nad metodami POST również adnotację zabezpieczającą requesty przed wywołaniem metody z innego hosta niż był wygenerowany formularz. Strona generuje kod, który jest weryfikowany przy każdym wywołaniu metody i tylko taki request zostanie zaakceptowany. Nie można wtedy wykonać requestu z zewnętrznego serwera. Taki atak nazywa się cross-site request forgery attack.

Dodanie nowej pozycji w menu

Otwieramy plik z układem strony i dodajemy nową pozycję menu – Work Items. Dla nas będzie to nowy kontroler WorkItems i metoda Index, czyli chcemy zobaczyć listę zadań.

Uruchomienie strony

Po uruchomieniu strony wchodzimy na Work Items. Możemy dodać nowy rekord, wystarczy kliknąć w przycisk i wypełnić formularz i zapisać dane. Dzieje się to przez metodę Create. Po kliknięciu Details możemy zobaczyć podgląd jednego zadania i możemy też wejść dalej do metody Edit i zmodyfikować treść zadania. Zapisujemy zmiany i gotowe. Z listy zadań możemy też wybrać polecenie Delete, pojawia się najpierw widok potwierdzenia. Po potwierdzeniu wykonuje się metoda typu POST i usuwamy dane z bazy danych.

Podsumowanie

W ten sposób bez pisania kodu w kilka minut mamy utworzony obszar biznesowy w naszej aplikacji. Używając mechanizmów autoryzacji z poprzedniego odcinka, możemy określić dostęp dla określonych grup użytkowników dla wybranych operacji. Mamy pełnoprawny, zabezpieczony obszar biznesowy, który możemy uruchomić i używać w internecie.