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.

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

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.

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

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

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.

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

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

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().