• Nie Znaleziono Wyników

lab 2

N/A
N/A
Protected

Academic year: 2021

Share "lab 2"

Copied!
12
0
0

Pełen tekst

(1)

Modele danych – walidacja – widoki zorientowane na

model

1. Wprowadzenie – Modele danych

Modele danych w ASP.NET MVC to klasy znajdujące się w katalogu Models. Ich zadaniem jest mapowanie danych przesyłanych pomiędzy źródłami danych, a klientem. Innymi słowami są kontenerami na dane, na których operuje aplikacja Web . Oprócz przechowywania danych mają kilka dodatkowych właściwości, które można wykorzystać.

Jedną z nich jest nadanie parametrów walidacji danych, czyli sprawdzania ich poprawności, drugą jest możliwość przekazania ich do widoku. Właściwości te znacznie ułatwiają prace z danymi. W przykładowym kodzie z poprzedniej instrukcji występuje model reprezentujący domy. W tej postaci służył jedynie do przechowywania danych w liście statycznej kontrolera. Następnie przekazywany jest poprzez obiekt ViewBag do widoku gdzie jest wyświetlany.

(2)

Jest to najbardziej prymitywny sposób operowania na modelach danych.

2. Przekazywanie Modelu bezpośrednio do kontrolera.

Zamiast przekazywać z przeglądarki pojedyncze pola z modelu danych można przekazać cały model.

W takim przypadku obiekt domu zostanie utworzony automatycznie przez MVC i przekazany do metody. Ważne, aby „input→name” był identyczny, jak nazwa pola w klasie Modelu.

(3)

W poniższym przypadku model posiada pola Adres i Pokoi

Możemy również dodać prefiksy dom.Adres oraz dom.Pokoi. Istotne jest to gdy przekazujemy kilka modeli danych i chcemy je rozróżnić. Prefiks jest zgodny z nazwą argumentu metody kontrolera, do którego formularz zostanie wysłany.

Przykładowo możemy dodać w formularzu więcej pól i wysłać dwa modele jedne z prefiksem a drugi b.

(4)

3. Widoki zorientowane na typ - model

Widoki zorientowane na typ jest widokiem, który jest stworzony do wyświetlania danego modelu danych. Nie trzeba go już przekazywać przez ViewBaga. W niektórych przypadkach widok tego typu współdzielony jest przez metody wielu kontrolerów.

Model danych przekazywany jest bezpośrednio do widoku. W tym przypadku przekazywana jest cała lista domów.

(5)

W widoku natomiast należy zdefiniować z jakiego modelu będzie korzystać widok przez dodanie

@model <typ modelu>. W tym przypadku jest to lista domów @model List<DomModel>.

(6)

4. Edycja danych

W przypadku edycji-dodawania danych stosuje się najczęściej osobne widoki i metody kontrolerów obsługujących formularze, separując je od ogólnego wyświetlania danych.

Nasz kontroler nabył dwie dodatkowe metody Edit:

Pierwsza posiada dopisek [HttpGet] oznacza, że reaguje jedynie na żądania z przeglądarki typu GET (czyli sam url z parametrami). Jej zadanie to początkowe wyświetlenie formularza. W przypadku podania id w url-u przekaże użytkownika z listy do formularza. • Druga posiada dopisek [HttpPost] analogicznie reaguje ona tylko na żądania typu POST

(ten tym służy do przesyłania danych z formularzy). Jej zadaniem jest odebranie danych z formularza i dodać nowy dom lub podmienić istniejący.

(7)

Do obu metod wystarczy wyłącznie jeden widok o nazwie Edit zorientowany na tym DomModel.

Zauważcie, że formularz przekazywany jest metodą POST. Druga sprawa, formularz nie ma podanego adresu url np. action="/Dom/Edit" , dzięki temu formularz zostanie odesłany na

adres, na którym właśnie znajduje się przeglądarka.

Czyli odpala się metoda Edit z Get i wyświetla formularz, potem formularz wysyła dane na ten sam adres z modyfikacją metody na post, czyli odpala się metoda Edit z Post.

Zobaczcie, że w formularzu nie ma wzmianki na temat parametru id. On jet przesyłany w linku tak jakby GET-em.

(8)

Na koniec warto dodać odpowiednio odnośniki w widoku indeks do edycji i dodawania nowego domu.

5. Walidacja danych

Jednym z ważniejszych elementów tworzenia aplikacji webowych jest walidacja danych przychodzących od użytkownika. Nie wolno tego ignorować. Walidacji nie podlegają jedynie formularze, ale tak naprawdę wszystko co przyjdzie łączenie z adresem URL (adres sprawdza Wam między innymi MVC dzieląc go na kontroler i metodę).

Walidować należy dane szczególnie pod względem:

poprawności np. imię czy nazwisko zaczyna się od dużego znaku i zawiera jedynie litery

bez dodatkowych znaków.

uprawnień dostępu należy sprawdzać, czy jeśli użytkownik nadesłał jakiś formularz to czy

ma prawo zmodyfikować dany zbiór danych. Użytkownik może spreparować formularz i podać dowolny nr id np. nadać sobie uprawnienia administracyjne. Formularz w takich przypadkach będzie zawierał poprawny zestaw danych.

(9)

Aby walidować poprawność danych modelu należy w pierwszej kolejności nadać odpowiednie atrybuty polom jego klasy; czyli zapisujemy schemat walidacji poszczególnych pól.

Pełną listę atrybutów znajdziecie na stronie:

https://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations(v=vs.110).aspx Najczęściej używane to:

• Required – pole nie może być puste

• StringLength – określa maksymalną liczbę znaków • Range – określa zakres zmiennych liczbowych

• RegularExpression – pozwala wprowadzić wyrażenie regularne, za pomocą którego można walidować praktycznie dowolne ciągi znaków.

(10)

Następnie w kontrolerze należy dodać linijkę która sprawdza w danym momencie poprawność danych przesłanych od użytkownika. ModelState.IsValid zwraca true, jeśli dane w modelu danych są poprawne.

Jeśli nie są poprawne, cały model danych jest przekazywany do widoku Edit. Użytkownik w ten sposób może poprawić dane zamiast wpisywać je ponownie.

(11)

Ostatecznie brakuje jeszcze informacji o braku poprawności danych w widoku formularza. Przy odpowiednich polach formularza należy wywołać metodę:

@Html.ValidationMessage("nazwa pola") Zwróci ona błędy odnoszące się do danego pola lub nic.

(12)

Zadanie 1

Rozszerzyć aplikację z poprzednich zajęć, o widoki zorientowane na typy danych. Dodać niezależne metody i widoki pozwalające na edycję danych.

Dla przypomnienia, aplikacja ma służyć do zarządzania biblioteką. Podstawową funkcjonalnością jest wyświetlanie i dodawanie książek do katalogu. Dodatkowo aplikacja powinna pozwalać wyszukiwać i usuwać pozycje z katalogu.

Zadanie 2

Cytaty

Powiązane dokumenty

Prawa osoby, której dane dotyczą: prawo dostępu do danych osobowych, w tym prawo do uzyskania kopii tych danych; prawo do żądania sprostowania (poprawiania) danych osobowych – w

Podczas zalesiania terenu posadzono drzew liściastych, drzew iglastych i krzewów.. Wykonajmy

Aplikacja umo¿liwia miêdzy innymi odczyt danych w trybie rzeczywistym z pod³¹czonego do komputera urz¹dzenia zewnêtrznego (np. konduktometru) i na ich podstawie wykonanie

Raport jest to opis przebiegu akcji w bazie danych.np koniec filtrowania itd.. Dzięki niej możemy pobierać dane i tworzyć zestawy

Do opisu/tworzenia strony często stosuje się język HTML (z ang. Hypertext Markup Language). Nazwa strona jest jednak nazwą umowną, ponieważ jest zbudowana z wielu stron, które

Schemat zastępczy, odwzorowujący mechanizm indukowania się zakłóceń, przedstawia rys.7.8 Napięcie pomiędzy ekranem, a punktem odniesienia moŜe zaindukować się w sytuacji, w

Możliwe jest aby po lewej stronie znaku równości (nierówności, nieostrej równości) była umieszczona para (trójka, itd.) wartości (kolumn). Musi jej odpowiadać liczba kolumn lub

PROMISCIUOUS (mieszany) aby karta odbierała wszystkie pakiety wędrujące w sieci (segmencie sieci) nie tylko te, które są przeznaczone dla niej.- przechwytuje pakiety przesyłane