ASP.NET Core MVC – Konfiguracja
Było trochę o konfiguracji hosta, było o konfiguracji aplikacji, więc na spokojnie możemy przejść do konfiguracji i uruchomienia aplikacji MVC. W tym celu dodamy prosty kontroler oraz widok do naszej aplikacji oraz skonfigurujemy router. Ale zacznijmy od początku.
Service i konfiguracja MVC
Na samym początku musimy dodać odpowiednią bibliotekę do obsługi MVC do naszego projektu, najprościej użyć do tego nuget-a. Z listy dostępnych bibliotek należy wyszukać Microsoft.AspNetCore.Mvc. Tutaj zwrócę uwagę, iż w repozytorium nuget-a znajduje się również biblioteka Microsoft.AspNetCore.Mvc.Core, ale w naszym najprostszym przykładzie nie będziemy z niej korzystać (przynajmniej na razie). Kolejnym krokiem jaki musimy wykonać jest dodanie serwisu MVC. Dzięki wykorzystaniu mechanizmu dependency injection oraz dostarczonego wraz z ASP.NET Core kontenera, dodanie serwisu MVC jest dziecinnie proste. Pamiętacie jeszcze jak pisałem o tym, że w Startupie możemy dodawać serwisy, dziś to zrobimy.
1 2 3 4 |
public void ConfigureServices(IServiceCollection services) { services.AddMvc(); } |
Jak widzimy dodałem serwis MVC, a właściwie zrobiła to za mnie extension method, która znajduje się w dodanej przez nas bibliotece.
Routing
Ostatnim krokiem konfiguracyjnym w dniu dzisiejszym, będzie dodanie odpowiedniego routingu do naszego kontrolera. Wykorzystam tu, wydaje mi się oklepany przykład z dokumentacji, ale nie chcę utknąć na routingu, jeszcze przed dodaniem kontrolera oraz widoku.
W przed app.Run wstawiamy
1 2 3 4 |
app.UseMvc(routes => { routes.MapRoute("default", "{controller=Home}/{Action=Index}"); }); |
Ta metoda zakończy nasz pipeline, jeśli tylko dopasuje naszego routa do jakiegoś templatu. W tym miejscu chyba należy się chwila wyjaśnienia. Co tak właściwie robimy? Jak zapewne pamiętacie z tego posta Use dodaje jakiś element do naszego middleweru. W tym przypadku dodawana jest middlewere do ASP MVC. Umożliwia on wywołanie odpowiednich metod z odpowiednich kontrolerów w zależności od zdefiniowanych routów. W naszym przypadku adres będzie wyglądał następująco “nasza_domena/kontroler/akcja” konkretne przypisania po znaku równości “=” wartości informują nasz middleware, co mamy wykorzystać jeśli te 2 parametry nie zostaną jawnie podane. Tak więc, w naszym przypadku odwołania do kontrolera “Home” i akcji “Index” nastąpi w 3 przypadkach :
- domena/
- domena/Home/
- domena/Home/Index
Gdyby nie wykorzystany mechanizm, gdzie podajemy jakie mają być wartości domyślne odpowiadałby on tylko 1 konkretnemu kontrolerowi oraz 1 akcji.
Kontroler
Konfiguracja za nami, pora ażeby stworzyć pierwszy kontroler naszej aplikacji. Dzisiaj będzie to prosty kontroler serwujący 1 widok. Mam nadzieje, że uda mi się utrzymać kontrolery w miarę czyste. Wiem, iż często ląduje tam zbyt wiele, ale zgodnie z SOLID-em powinny one jedynie serwować dane, a przynajmniej takiego jestem zdania. Co z tego wyjdzie pewnie czas pokaże.
1 2 3 4 5 6 7 8 9 10 11 12 |
public class HomeController : Controller { public IActionResult Index() { return View("../Index"); } public IActionResult A() { return View("../Index","A kot ma ale"); } } |
Jak widać dodałem tutaj 2 akcje “Index” oraz “A” w zależności od tego jaki adres wybierzemy zaserwowany zostanie ten sam widok Index ale w przypadku akcji “A” dodany zostanie mój pseudo model danych w postaci stringa.
Widok
Już prawie wszystko. Zostało nam tylko jeszcze dodać to co chcemy wyświetlić, a mianowicie nasz widok. Tutaj również fajerwerków nie będzie.
1 2 3 |
@model string <h1>Ala ma kota </h1> <h2>@Model</h2> |
Jak widać widok jest prosty i zawiera początek znany chyba każdemu z elementarza, ale do rzeczy. W 1 linii wskazujemy jakiego typu są dane w naszym modelu. Dzięki temu intelisens nie wariuje i podpowiada nam składnie. W 2 linii mamy prosty statyczny tekst w nagłówku h1. Ostatnia linia to dodanie danych z modelu w nagłówku h2.
W ten oto sposób uruchomiliśmy po raz pierwszy aplikację MVC, którą mam nadzieje rozwijać.