• Nie Znaleziono Wyników

lab 4

N/A
N/A
Protected

Academic year: 2021

Share "lab 4"

Copied!
12
0
0

Pełen tekst

(1)

Widoki zagnieżdżone, layout

1. Wprowadzenie – Repozytoria danych

Identyczne operacje na danych często się powtarzają np. pobierz książkę. Jeśli zapytanie realizowane jest za każdym razem w metodzie kontrolera to uzyskujemy dużo powtórzeń tego samego kodu. Ażeby temu zapobiec wydziela się osobną klasę odpowiadającą za dostęp do danych. Jej plusy to:

• Redukcja powtórzeń kodu odpowiadającego za dany rodzaj danych (łatwiej zapanować nad kodem w dużych wieloosobowych projektach).

• Wszystkie operacje na kolekcji w jednym miejscu (łatwiej coś dopisać lub zmienić).

• Możliwość podziału pracy (wydzielona osoba odpowiadająca za dostęp do danych np. pisze zapytania SQL dostarczając pozostałym już tylko obiekty).

W MVC klasy odpowiedzialne za operacje na danych możemy umieszczać w katalogu Models. Warto również opatrzyć je dopiskiem Repository.

/Models/{nazwa}Repository.cs

Jest to zwykła klasa, która odpowiada za operację na danych. W kontrolerach tworzy się obiekt tej klasy i korzysta z jej iterfejsu. W naszym przykładzie mamy dwa modele i dwa repozytoria:

(2)

Repozytorium Mieszkań

(3)
(4)

Nasze repozytoria jednocześnie przetrzymują dane. Dodatkowo w przykładzie posiadamy dwa kontrolery dla mieszkań i mieszkańców.

(5)

Kontroler lokatorów

Wszystko ładnie rozdzielone.

Uwaga 1. Zauważcie, że lokatorzy nie są bezpośrednio powiązani z mieszkaniami np. przez

umieszczenie ich w liście. Natomiast są powiązani poprzez id mieszania.

Uwaga 2. Guid – jest zmienną generująca i przetrzymującą unikatowy numer seryjny, na podstawie

którego możecie rozróżnić obiekty. Do wygenerowania unikalnego Guida należy użyć metody:

(6)

2 Wprowadzenie – zaawansowane wykorzystanie

widoków

Do tej pory używaliście-tworzyliście pojedyncze widoki pod każdą metodę-akcję kontrolera. W rzeczywistości można wykorzystywać dodatkowe widoki dla pojedynczych elementów strony. Takimi elementami są np. paginacja, logowanie, status. Powtarzają się na wielu stronach, ale nie są głównym kontentem, warto wtedy je umieścić w osobnych widokach, aby nie powtarzać kodu. Dodatkowo dzięki takim zabiegom mamy większą kontrolę nad kodem, łatwiej modyfikować stronę zachowując spójność.

Można je przeplatać, czyli w jednym widoku odwołacie się do kilku innych. Często spotykanym elementem może być drobny widok dla pojedynczego obiektu np. domu. W przypadku wyświetlania listy domów ten pojedynczy widok może zostać wywołany wielokrotnie.

W MVC rozróżniono 3 rodzaje widoków:

Normalny ten który dotychczas używaliście, z modelem lub bez, dedykowany pod metody

kontrolerów. Domyślnie View→{controller}→ {action}

Layout okalający normalne widoki. W nim znajduje się całość kodu html. Widoki tego typu

nie posiadają modeli danych i są umieszczane w katalogu View→Shared. Domyślny layout jest zdefiniowany w pliku View→ _ViewStart.cshtml

(7)

Partial widoki częściowe podobnie do normalnych z modelem lub bez, jednakże nie są

przypisane kontrolerom. Znajdują się w katalogu View→Shared razem z layoutami.

W naszym przykładzie stworzono widok partial dla modelu mieszkania ponieważ będzie się on nam powtarzał wielokrotnie. Nazwany on został z dopiskiem Partial dla rozróżnienia.

(8)

Dodając nowy widok zaznaczono, że jest on typu partial i wybrano użycie szablonu Details

FlatPartial

Uwaga 1. Od tego momentu możemy tego widoku używać dowolnie w widokach.

(9)
(10)

Widok flat/edit

Widoki kontrolera mieszańców wykorzystują widok częściowy mieszkania. Widok Resident/index. !!!Użyto widoku częściowego.

(11)
(12)

Zadanie

• Rozszerzyć aplikację z poprzednich zajęć. Zaktualizować widoki.

• Stworzyć widok paginacji w oparciu o layout paginacji bootstrapa. Paginacja ma za zadanie wyświetlać tylko część elementów na liście. Czyli klikając na 2 stronę ma wyświetlić nam od 10 elementów, zaczynać od elementu o indeksie 2x10. Z listy możecie wyłuskać taki fragment przez zapytanie.

list.Skip(2*10).Take(10) http://getbootstrap.com/components/#pagination

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

Cytaty

Powiązane dokumenty

In the following two passages we shall investigate boundary value problems for certain partial differential equations of order 2 • N (where N is a positive integer). In the last

O sumach częściowych pewnej klasy funkcji jednolistnych Об отрезках ряда Тейлора одного класса однолистных функций.. Subsequently the

In order to explain the frequency-dependent behavior of phase ve- locity and damping coefficient and their relationship to liquid satura- tion, it is illustrative to examine

Chapter 6 describes the RADOCA radar demonstrator that has been realised and the results of the signal processing techniques which have been developed: the calibration procedure,

As a test case, this SPIV system has been used for the measurements of the velocity field around a catamaran, namely the Delft 372 model, for which a large database is in

Liczono na to, że szybki rozwój Akcji Katolickiej w diecezji uda się oprzeć na członkach wywodzących się z pa- rafi alnych organizacjach dewocyjnych, które chciano wykorzystać

Tadeusza Boya-Żeleńskiego czy Adolfa Now aczyńskiego spraw iły, że owe zarzu ty zaczęły być coraz bardziej po pularne i chyba dość mocno u trw aliły się w

But with decreasing cavitation number the flow detachment point moves a little towards the front end of the cavity, while the reattachment point moves downstream with