asp mvc routing gwiazda tematu

ASP MVC Routing interpretacja obrazkowa

ASP MVC Routing potrafi cuda, dzisiaj o jednym z nich. Otóż w prosty sposób można zdefiniować routing, który łapać będzie żądania, które nie pasują do wcześniej zdefiniowanych reguł. Należy uważać oczywiście na kolejność definiowania routingów, bo wpływa ona na zachowanie aplikacji. Pierwszy pasujący do wzorca, będzie brany pod uwagę. Core gra trochę inaczej ale to zaznaczę w tekście.

Gwiazda

Obsługę dziwnych linków, kota na klawiaturze, problemu jąjąjąkaniem się na klawiaturze można ogarnąć przy pomocy custom error page 404 lub wykorzystaniu symbolu gwiazdki który jest dozwolony w asp mvc routing.

Przykład asp mvc core:

Oraz odrobinę inaczej w asp mvc framework

Drobna różnica w nazwach parametrów template oraz url oraz większa w zachowaniu i obsłudze żądań.

W klasycznym podejściu asp mvc routing zadziała tak, że default (controller/action/id) będzie zawsze starał się dopasować wysłane żądanie i dopiero gdy złapany zostanie 4 segment w url – routing uber będzie starać się do dopasować do swojej definicji:

Kto, jak, gdzie, rozkmina

Klasycznie

Url Routing
/ default
/home default
/home/index default
/home/index/blah default, ponieważ id może być wszystkim
papier/nożyce/kamień default (uwaga, nie mam takiego kontrolera)
/papier/nożyce/kamiń/spock uber (wszystkie dłuższe także)

I teraz na scenę wchodzi routing zrobiony w core, gdzie zachowanie jest trochę inne:

Core

Url Routing
/ default
/home default
/home/index default
/home/index/blah default
papier/nożyce/kamień uber
/papier uber
/papier/kamień/nożyce/spock uber
/home/notfound uber

Wynika z tego, że asp mvc routing w core użycie * umożliwi przechwycenie wszelkich żądań, które nie pasują do wcześniej zdefiniowanych zasad. Podczas gdy klasyczny mvc jest bardziej restrykcyjny przy rozwiązywaniu kontrolera oraz akcji. Które lepsze – osobiście sam nie wiem, jedno i drugie ma swoje zady i walety, także myślę, że najlepiej jest znać zachowanie i z nim żyć, bez wystawiania oceny.

Gdzie są dane

Aby odczytać listę parametrów przesłanych do uber kontrolera można skorzystać z klasy RouteData, poniżej przykład:

W ten sposób można wyświetlić wszystkie wartości segmentów wpisane w adresie strony. Będą one przypisane do wartości star lub uber w zależności jak została nazwana. To tylko część dobroci i mocy, które kryje w sobie routing.

Kod dostępny jest pod tymi linkami:
Core routing
Mvc rounting

3 thoughts on “asp mvc routing gwiazda tematu

  1. Pingback: dotnetomaniak.pl
  2. Hej,

    Czemu niektóre usingi typu mvc.routing umieszczasz w ciele namespace a inne nad (poza) ? Co się za tym kryje jestem ciekaw 🙂

    A druga sprawa to trzymanie również różnych kontrolerów w jednym pliku, klasie jest na potrzebny prezentacji, czy ma to swoje zalety.

    Dziękuję.

    1. Hej, część jest dodawana przez VS a część przez R#. O ile dobrze pamiętam, to stylecop zaleca trzymanie usingów w namespace – ja też tam preferuje, naleciałość z C++ i zaśmiecania przestrzeni nazw. Staram się to porządkować, ale w przypadku bloga zdarza mi się zapomnieć.

      Przypadek z kilkoma klasami na plik, jest akceptowalna tylko na blogu, taki blok kodu zajmuje mniej miejsca i jest czytelniejszy. W normalnym projekcie, gdy widzę kilka klas w jednym pliku moje oczy krwawią.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *