#9.2 Tworzymy nowy kontroler – HomeController

Tworzymy nowy kontroler o nazwie Home (HomeController).

Wiemy już jak stworzyć nowy pusty projekt. Zerknijmy teraz do modułu Solution Explorer i zerknijmy do katalogów Controllers i Views. Widzimy tam, że narazie nie mamy stworzonych żadnych kontrolerów i widoków.

PierwszaAplikacja - Solution Explorer.
Rysunek 9.2.1. PierwszaAplikacja – Solution Explorer.

Po uruchomieniu projektu w takim momencie otrzymamy błąd w przeglądarce (Rysunek 9.2.2).

Visual Studio - pierwsze uruchomienie pustego projektu "PierwszyProjekt".
Rysunek 9.2.2 Visual Studio – pierwsze uruchomienie pustego projektu „PierwszaAplikacja”.

Dlaczego otrzymamy taki błąd? Bo wybraliśmy szablon Empty i jeszcze nic nie dodaliśmy do naszego projektu.

W pierwszej kolejności dodamy kontroler o nazwie Home. W oknie Solution Explorer klikamy PPM na folderze Controllers i z rozwijalnego menu wybieramy opcję Add a później Controller.

Tworzymy nowy kontroler Home.
Rysunek 9.2.3. Tworzymy nowy kontroler Home.

Pojawia się okno z możliwością wyboru typu kontrolera. W naszym przykładzie wybieramy Empty i klikamy na OK.

Wybieramy typ kontrollera Home.
Rysunek 9.2.4. Wybieramy typ kontrolera Home.

Zgodnie z konwencją MVC nazwy kontrolerom nadajemy dodając do nazwy słówko Controller (jak poniżej).

9.2.5. Kontroler Home - nadawanie nazwy.
Rysunek 9.2.5. Kontroler Home – nadawanie nazwy.

W takie prosty sposób stworzyliśmy nasz pierwszy kontroler o nazwie Home i możemy go zobaczyć w oknie Solution Explorer’a w folderze Controllers.

9.2.6. HomeController.
Rysunek 9.2.6. HomeController.

Jeżeli klikniemy na niego w oknie głównym zobaczymy zawartość naszego kontrolera.

9.2.7. Zawartość kontrolera Home.
Rysunek 9.2.7. Zawartość kontrolera Home.

No dobrze, mamy nasz kontroler i co się teraz stanie jak uruchomimy nasz projekt (wciskamy F5)?

9.2.8. Błąd widoku kontrolera.
Rysunek 9.2.8. Błąd widoku kontrolera.

No nie! Znowu błąd?

Błąd występuje dlatego, że nie mamy jeszcze utworzonego widoku, który chcemy wyświetlić. W chwili uruchomienia projektu, uruchamiamy metodę Index z kontrolera Home. Dlaczego? Bo w domyślnej ścieżce rutingu (pamiętamy: plik RouteConfig.cs w folderze App_Start) jest zapis.

 routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );

Czyli na początku próbujemy uruchomić metodę Index z kontrolera Home. A ta metoda zawiera metodę View() która zwraca nam odpowiedni widok. Zgodnie z konwencją MVC kompilator szuka widoku o takiej samej nazwie jak nasza metoda akcji, czyli szuka widoku o nazwie Index, a takiego widoku na razie nie ma. Stąd ten błąd. Ale spokojnie w kolejnych częściach kursu utworzymy odpowiedni widok.

Ostatnim działaniem w tym podrozdziale będzie lekka modyfikacja metody Index według poniższego listingu.
Listing 9.3.1 Modyfikacja metody Index w kontrolerze HomeController (zmodyfikowana część jest pogrubiona).

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace PierwszaAplikacja.Controllers
{
   public class HomeController : Controller
   {
       // GET: Home
       public ViewResult Index()
       {
           return View();
       }
   }
}

Różnica między użyciem ActionResult na ViewResult zostanie wyjaśnione w dalszej części kursu. Na tą chwilę wyjaśnię tylko tyle, że metoda ViewResult() dziedziczy po metodzie ActionResult().