Dodawanie kontrolera (C#)

Autor : Rick Anderson

Uwaga

Zaktualizowana wersja tego samouczka jest dostępna tutaj, która używa ASP.NET MVC 5 i Visual Studio 2013. Jest ona bezpieczniejsza, znacznie prostsza do naśladowania i demonstruje więcej funkcji.

Ten samouczek zawiera podstawowe informacje na temat tworzenia aplikacji internetowej MVC ASP.NET przy użyciu programu Microsoft Visual Web Developer 2010 Express z dodatkiem Service Pack 1, który jest bezpłatną wersją programu Microsoft Visual Studio. Przed rozpoczęciem upewnij się, że zostały zainstalowane wymagania wstępne wymienione poniżej. Wszystkie te elementy można zainstalować, klikając następujący link: Instalator platformy sieci Web. Alternatywnie można osobno zainstalować wymagania wstępne, korzystając z następujących linków:

Jeśli używasz programu Visual Studio 2010 zamiast Visual Web Developer 2010, zainstaluj wymagania wstępne, klikając następujący link: Wymagania wstępne programu Visual Studio 2010.

Projekt Visual Web Developer z kodem źródłowym języka C# jest dostępny do dołączenia do tego tematu. Pobierz wersję języka C#. Jeśli wolisz język Visual Basic, przejdź do wersji Visual Basic tego samouczka.

MVC to skrót od model-view-controller. MVC to wzorzec tworzenia aplikacji, które są dobrze zaprojektowane i łatwe w obsłudze. Aplikacje oparte na mvC zawierają:

  • Kontrolery: klasy, które obsługują żądania przychodzące do aplikacji, pobierają dane modelu, a następnie określają szablony widoków, które zwracają odpowiedź do klienta.
  • Modele: klasy reprezentujące dane aplikacji i używające logiki walidacji do wymuszania reguł biznesowych dla tych danych.
  • Widoki: pliki szablonów używane przez aplikację do dynamicznego generowania odpowiedzi HTML.

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

Zacznijmy od utworzenia klasy kontrolera. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy folder Controllers, a następnie wybierz polecenie Dodaj kontroler.

Zrzut ekranu przedstawiający okno Eksplorator rozwiązań. Polecenie Dodaj jest zaznaczone w menu kliknij prawym przyciskiem myszy kontroler. Kontroler jest zaznaczony w menu podrzędnym.

Nadaj nowemu kontrolerowi nazwę "HelloWorldController". Pozostaw domyślny szablon pusty kontroler i kliknij przycisk Dodaj.

AddHelloWorldController

Zwróć uwagę, że w Eksplorator rozwiązań został utworzony nowy plik o nazwie HelloWorldController.cs. Plik jest otwarty w środowisku IDE.

Zrzut ekranu przedstawiający kartę Hello world Controller dot c s i okno Eksplorator rozwiązań. Hello world kontroler dot c s jest zaznaczony w folderze Controllers.

public class HelloWorldController Wewnątrz bloku utwórz dwie metody, które wyglądają jak poniższy kod. Kontroler zwróci ciąg HTML jako przykład.

using System.Web;
using System.Web.Mvc; 
 
namespace MvcMovie.Controllers 
{ 
    public class HelloWorldController : Controller 
    { 
        // 
        // GET: /HelloWorld/ 
 
        public string Index() 
        { 
            return "This is my <b>default</b> action..."; 
        } 
 
        // 
        // GET: /HelloWorld/Welcome/ 
 
        public string Welcome() 
        { 
            return "This is the Welcome action method..."; 
        } 
    } 
}

Kontroler ma nazwę , HelloWorldController a pierwsza z powyższych metod nosi nazwę Index. Wywołajmy ją z przeglądarki. Uruchom aplikację (naciśnij klawisz F5 lub Ctrl+F5). W przeglądarce dołącz ciąg "HelloWorld" do ścieżki na pasku adresu. (Na przykład na poniższej ilustracji jest http://localhost:43246/HelloWorld.to ) Strona w przeglądarce będzie wyglądać podobnie do poniższego zrzutu ekranu. W powyższej metodzie kod zwrócił ciąg bezpośrednio. Powiedziałeś systemowi, aby po prostu zwrócił jakiś kod HTML i to zrobiło!

Zrzut ekranu przedstawiający przeglądarkę. Jest to moja domyślna akcja to tekst w oknie.

ASP.NET MVC wywołuje różne klasy kontrolerów (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 formatu podobnego do tego w celu określenia kodu, który ma być wywoływany:

/[Controller]/[ActionName]/[Parameters]

Pierwsza część adresu URL określa klasę kontrolera do wykonania. Tak więc /HelloWorld mapuje na klasę HelloWorldController . Druga część adresu URL określa metodę akcji w klasie do wykonania. Dlatego /HelloWorld/Index spowodowałoby Index wykonanie metody HelloWorldController klasy. Zwróć uwagę, że musieliśmy przejść tylko do /HelloWorld , a Index metoda została użyta domyślnie. 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.

Przejdź na stronę http://localhost:xxxx/HelloWorld/Welcome. Metoda Welcome jest uruchamiana i zwraca ciąg "To jest metoda akcji powitalnej...". Domyślne mapowanie MVC to /[Controller]/[ActionName]/[Parameters]. W przypadku tego adresu URL kontroler jest HelloWorld i Welcome jest metodą akcji. Nie użyto [Parameters] jeszcze części adresu URL.

Zrzut ekranu przedstawiający przeglądarkę. Jest to metoda akcji Powitanie jest tekstem w oknie.

Zmodyfikujmy nieco przykład, aby przekazać niektóre informacje o parametrach z adresu URL do kontrolera (na przykład /HelloWorld/Welcome?name=Scott&numtimes=4). Zmień metodę tak Welcome , aby zawierała dwa parametry, jak pokazano poniżej. Należy pamiętać, że kod używa funkcji opcjonalnego-parametru języka C#, aby wskazać, że numTimes parametr powinien być domyślnie ustawiony na 1, jeśli żadna wartość nie zostanie przekazana dla tego parametru.

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

Uruchom aplikację i przejdź do przykładowego adresu URL (http://localhost:xxxx/HelloWorld/Welcome?name=Scott&numtimes=4). Możesz wypróbować różne wartości dla name i numtimes w adresie URL. System automatycznie mapuje nazwane parametry z ciągu zapytania na pasku adresu na parametry w metodzie.

Zrzut ekranu przedstawiający przeglądarkę. Witaj Scott Num Times jest 4 to tekst w oknie.

W obu tych przykładach kontroler wykonuje część "VC" MVC — czyli widok i kontroler działają. Kontroler zwraca kod HTML bezpośrednio. Zwykle nie chcesz, aby kontrolery zwracały kod HTML bezpośrednio, ponieważ staje się to bardzo kłopotliwe w kodzie. Zamiast tego zazwyczaj użyjemy oddzielnego pliku szablonu widoku, aby ułatwić generowanie odpowiedzi HTML. Przyjrzyjmy się dalej, jak możemy to zrobić.