• Nie Znaleziono Wyników

lab 3

N/A
N/A
Protected

Academic year: 2021

Share "lab 3"

Copied!
7
0
0

Pełen tekst

(1)

Ruting, helpery

1. Wprowadzenie

a. Ruting

Ruting w ASP.NET MVC służy do interpretacji adresów URL żądań. Żądanie na serwer www trafia po nazwie domeny lub ip hosta, który go identyfikuje w sieci, czyli np.:

localhost:9999 iisi.pcz.pl127.0.0.1:9999

Dalsza cześć adresu jest już informacją dla samego serwera www np.: • localhost:9999/home/index

• localhost:9999/dom/add?nr=11 • localhost:9999?nr=11

W przypadku zwykłego serwera www adres wskazuje ścieżkę w katalogach serwera na plik, który ma odesłać np. dla /home/index serwer, będzie się starał zajrzeć do katalogu home i odesłać z niego plik index.html. Jeśli index to katalog to zwróci wykaz zawartości katalogu.

W przypadku MVC domyślne zachowanie serwera zostało nadpisane przez aplikację www. Całość trafia bezpośrednio do aplikacji www jako interpretowany przez nią parametr. Domyślnie w MVC pierwszy człon katalogu interpretowany jako nazwa kontroler drugi jako metoda.

/{kontroler}/{metoda}

Dzięki temu uzyskujemy przyjazne linki, lepiej wyglądające i czytelniejsze dla użytkownika. W rzeczywistości możemy dopisać swoje własne reguły interpretacji adresów URL. W tym celu należy modyfikować plik /App_Start/RouteConfig.cs

(2)

Początkowo istnieje tam wyłącznie jedena-domyślna reguła mapująca adres. Każda reguła cechuje się trzema parametrami:

• name – nazwa reguły (id), unikatowa.

• url – wyrażenie mapujące, czyli wskazuje jak adres ma zostać pocięty i do jakich zmiennych przypisać wycięte frazy.

• defaults – przypisanie wartości domyślnych zmiennym, albo idąc inną drogą wartości początkowe, które mogą zostać nadpisane treścią wyciętą z url-a.

Stałymi zmiennymi jest {controller} , czyli nazwa kontrolera oraz {action} , czyli nazwa metody wywołanej na kontrolerze. Te dwa parametry mogą się nie znaleźć w wyrażeniu mapującym, ale muszą zostać podane w wartościach domyślnych.

Powyższa reguła będzie interpretowała jedynie adresy rozpoczynające się od /domdom np: • /domdom – DomController→Index – parametry {nr=null}

/domdom/Add – DomController→Add – parametry {nr=null}/domdom/Add_123 – DomController→Add – parametry {nr=123}/domdom?nr=123 – DomController→Index – parametry {nr=123}/domdom/index_123?a=321 – DomController→Add – {nr=123, a=321}

(3)

Powyższa natomiast reguła będzie interpretowała jedynie adresy rozpoczynające się od /d np: • /d – DomController→Index – {nr=null, lok=null}

/d/1 – DomController→Index – {nr=1, lok=null}/d/3/12 – DomController→Index – {nr=3, lok=12}

/d?abc=123 – DomController→Index – {nr=3, lok=12, abc=123}/d/3?a=321&b=abc  –  DomController→Add  –  {nr=3,   lok=null,

a=321, b=”abc”}

Pamiętajmy, że kolejność reguł jest ważna jeśli URL spasuje do jednej z pierwszych reguł, wówczas dalej już nie są sprawdzane. Z tego powodu domyślna jest na samym końcu ponieważ pasuje do wszystkich URL-ów.

b. Helpery

W MVC pełnią rolę klas pomocniczych. Można je podzielić na dwie grupy. Pierwsze URL-helpers pomagają generować adresy url. Drugie HTML-helpers generują gotowe fragmenty kodu HTML. Zazwyczaj oba typy helperów wykorzystywane są w widokach.

URL-helpers

Do tej pory w widokach podawaliście adresy URL ręcznie w formie tekstu. np. • /dom/edit

(4)

Ta forma może doprowadzić do problemów, gdyż np. zmiana rutingu będzie wymagać zmiany wszystkich adresów w widokach. Zamiast tego można skorzystać z helpera.

Wywołanie metody @Url.Action("Edit",   new   {   id=id   }) utworzy nam odpowiedniego linka zgodnie z regułami rutingu. Pierwszy parametr jest akcją, następnie przekazywany jest dynamiczny obiekt z pozostałymi dowolnymi parametrami. W tej formie parametry są również enkodowane, gdyż jak wiadomo w URL-u nie mogą występować np. spacje, jak również inne znaki specjalne.

HTML-helpers

Ten rodzaj helpera służy do generowania elementów-tagów HTML. np. obie poniższe linijki wygenerują ten sam link. Druga korzysta z helpera @Html.ActionLink.

(5)

Analogicznie:

Można zapisać przy użyciu helpera w następujący sposób:

Do najczęściej wykorzystywanych metod z html-helpera należą:

@using(Html.BeginForm()){ HTML } - generuje formularz <form>. Ponieważ formularz okala inne elementy to używamy go razem z blokiem using(){}.

@Html.LabelFor(m=>m.Adres) – generuje element <label> z treścią. Jako parametr przyjmuje wyrażenie lambda do modelu danych widoku.

(6)

@Html.EditorFor(m=>m.Adres) – generuje element <input>. Jako parametr przyjmuje wyrażenie lambda do modelu danych widoku.

@Html.ValidationMessageFor(m=>m.Adres) – wyświetla informację o błędach walidacji pola.

@Html.NameFor(m=>m.Pokoi) – wyświetla nazwę pola z modelu danych.

@Html.DisplayFor(m=>m.Pokoi) – wyświetla wartość pola z modelu danych. Wymienione metody występują również bez dopisku For co oznacza, że nie są one powiązane z modelem danych widoku. Trzeba wtedy podać więcej parametrów, które w normalnej sytuacji są sczytywane z modelu danych. np.

(7)

Zadanie

Rozszerzyć aplikację z poprzednich zajęć. Zaktualizować widoki z użyciem helperów. Zmodyfikować ruting, tak aby domyślny kontroler był kontrolerem biblioteki. Zbadać jak zachowują się generowane linki z różną kombinacją parametrów, w zależności od wprowadzonych reguł rutingu.

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.

Cytaty

Powiązane dokumenty

;7P›¼ ½{¾K¿Às¿©ÁsÂÿÄÆÅÀGÇÄ/ÈÊÉzËsÁoÌË$ÇGÀ"¿iÀGÍÊÌKÄÆÌzÎ"ÏЯЯÐÑ ÒYÓÔÈKÑ ÌKÀGÕ6Ñ

Zestawienia do wykonania za pomocą tabel/wykresów przestawnych (dla każdego podpunktu – w osobnym arkuszu). Struktura powinna obejmować tylko następujące źródła: HCOAL,

Lista rozwijalna z przykładu 1 zawiera miejscowości z list oddziałów, wybranie miejscowości i kliknięcie na przycisk wyświetla poniżej informacje o adresie danego oddziału,

Spostrzeżono mianowicie oddaw na, że przez zrastanie się bliźniacze kryształów zmniejsza się ilość kątów i krawędzi, w y­.. stawionych nazewnątrz; ta k

gólna larw a bardzo je st rospowszechniona i do tego w rozm aitych skupieniach mało ze sobą spokrew nionych, wówczas możemy przyw iązyw ać do niej wielką wagę

[r]

Środek fortecy zajm ują trzy w ieżyce, z których środkowa okrągła przeznaczona była dla monarchy; dw ie zaś boczne czw orokątne, m ieściły w sobie straż

[r]