Dodawanie kontrolera — wprowadzenie do podstaw ASP.NET MVC

Autor: Scott Hanselman

Uwaga

Zaktualizowana wersja, jeśli ten samouczek jest dostępny tutaj przy użyciu Visual Studio 2013. Nowy samouczek używa ASP.NET MVC 5, który zapewnia wiele ulepszeń w tym samouczku.

Jest to samouczek dla początkujących, który przedstawia podstawy ASP.NET MVC. Utworzysz prostą aplikację internetową, która odczytuje i zapisuje z bazy danych. Odwiedź centrum szkoleniowe ASP.NET MVC , aby znaleźć inne samouczki i przykłady ASP.NET MVC.

MVC to model, Widok, Kontroler. MVC to wzorzec tworzenia aplikacji, tak aby każda część ponosiła odpowiedzialność inną niż inna.

  • Model: dane aplikacji
  • Widoki: pliki szablonów używane przez aplikację do dynamicznego generowania odpowiedzi HTML.
  • Kontrolery: klasy, które obsługują przychodzące żądania ADRESU URL do aplikacji, pobierają dane modelu, a następnie określają szablony widoku, które renderuje odpowiedź z powrotem do klienta

Omówimy wszystkie te pojęcia w tym samouczku i pokażemy, jak używać ich do tworzenia aplikacji.

Utwórzmy nowy kontroler, klikając prawym przyciskiem myszy folder controllers w Eksploratorze rozwiązań i wybierając polecenie Dodaj kontroler.

AddControllerRightClick

Nadaj nowemu kontrolerowi nazwę "HelloWorldController" i kliknij przycisk Dodaj.

Okno dialogowe Dodawanie kontrolera

Zwróć uwagę na Eksplorator rozwiązań po prawej stronie, że został utworzony nowy plik o nazwie HelloWorldController.cs i ten plik jest teraz otwarty w środowisku IDE.

HelloWorldControllerCode

Utwórz dwie nowe metody, które wyglądają tak w nowej klasie publicznej HelloWorldController. Jako przykład zwrócimy ciąg KODU HTML bezpośrednio z naszego kontrolera.

using System.Web.Mvc;
 
namespace Movies.Controllers
{
    public class HelloWorldController : Controller
    {
        public string Index()
        {
            return "This is my default action...";      
        }
        
        public string Welcome()
        {  
            return "This is the Welcome action method...";
        }  
    }
}

Kontroler ma nazwę HelloWorldController, a nowa metoda nosi nazwę Index. Uruchom ponownie aplikację, tak jak wcześniej (kliknij przycisk odtwarzania lub naciśnij klawisz F5, aby to zrobić). Po uruchomieniu przeglądarki zmień ścieżkę na pasku adresu, na http://localhost:xx/HelloWorld gdzie xx jest dowolną liczbą wybraną przez komputer. Teraz przeglądarka powinna wyglądać podobnie jak na poniższym zrzucie ekranu. W naszej metodzie powyżej zwróciliśmy ciąg przekazany do metody o nazwie "Content". Powiedzieliśmy, że system po prostu zwraca jakiś kod HTML i to nie!

ASP.NET MVC wywołuje różne klasy kontrolera (i różne metody akcji w nich) w zależności od przychodzącego adresu URL. Domyślna logika mapowania używana przez ASP.NET MVC używa takiego formatu, aby kontrolować, jaki kod jest uruchamiany:

/[Kontroler]/[ActionName]/[Parametry]

Pierwsza część adresu URL określa klasę Controller do wykonania. Więc /HelloWorld mapuje na klasę HelloWorldController. Druga część adresu URL określa metodę Action w klasie do wykonania. W związku z tym /HelloWorld/Index spowoduje wykonanie metody Index() klasy HelloWorldController. Zwróć uwagę, że musieliśmy odwiedzić /HelloWorld powyżej, a metoda Index została dorozumiana. Jest to spowodowane tym, że metoda o nazwie "Index" jest domyślną metodą, która zostanie wywołana na kontrolerze, jeśli nie zostanie jawnie określona.

To jest moja domyślna akcja

Teraz odwiedźmy stronę http://localhost:xx/HelloWorld/Welcome. Teraz nasza metoda powitalna została wykonana i zwróciła ciąg HTML.

Ponownie, /[Controller]/[ActionName]/[Parameters], więc kontroler jest HelloWorld i Witamy jest metodą w tym przypadku. Jeszcze nie zrobiliśmy parametrów.

Jest to metoda akcji Powitalna

Zmodyfikujmy nieco nasz przykład, abyśmy mogli przekazać niektóre informacje z adresu URL do kontrolera, na przykład w następujący sposób: /HelloWorld/Welcome?name=Scott&numtimes=4. Zmień metodę powitalną, aby uwzględnić dwa parametry i zaktualizować ją tak jak poniżej. Należy pamiętać, że użyto opcjonalnej funkcji parametru języka C#, aby wskazać, że parametr numTimes powinien być domyślny do 1, jeśli nie został przekazany.

public string Welcome(string name, int numTimes = 1)
{
   string message = "Hello " + name + ", NumTimes is: " + numTimes;
   return "" + Server.HtmlEncode(message) + "";
}

Uruchom aplikację i odwiedź stronę http://localhost:xx/HelloWorld/Welcome?name=Scott&numtimes=4 zmieniającą wartość nazwy i liczb, jak chcesz. System automatycznie zamapował nazwane parametry z ciągu zapytania na pasku adresu na parametry w metodzie.

W obu tych przykładach kontroler wykonuje całą pracę i zwraca kod HTML bezpośrednio. Zwykle nie chcemy, aby kontrolery zwracały kod HTML bezpośrednio — ponieważ kończy się to bardzo uciążliwe dla kodu. Zamiast tego zwykle użyjemy oddzielnego pliku szablonu Widok, aby pomóc w wygenerowaniu odpowiedzi HTML. Przyjrzyjmy się, jak możemy to zrobić. Zamknij przeglądarkę i wróć do środowiska IDE.