Tworzenie kontrolera (C#)

Autor: Stephen Walther

W tym samouczku Stephen Walther pokazuje, jak dodać kontroler do aplikacji MVC ASP.NET.

Celem tego samouczka jest wyjaśnienie sposobu tworzenia nowych kontrolerów MVC ASP.NET. Dowiesz się, jak tworzyć kontrolery zarówno przy użyciu opcji menu Dodaj kontroler programu Visual Studio, jak i ręcznie tworząc plik klasy.

Korzystanie z opcji menu Dodaj kontroler

Najprostszym sposobem utworzenia nowego kontrolera jest kliknięcie prawym przyciskiem myszy folderu Controllers w oknie Eksplorator rozwiązań programu Visual Studio i wybranie opcji menu Dodaj kontroler (zobacz Rysunek 1). Wybranie tej opcji menu powoduje otwarcie okna dialogowego Dodawanie kontrolera (zobacz Rysunek 2).

Zrzut ekranu przedstawiający okno Eksplorator rozwiązań programu Visual Studio z opcjami Dodaj i Kontroler w menu prawym przyciskiem myszy.

Rysunek 01. Dodawanie nowego kontrolera (kliknij, aby wyświetlić obraz pełnowymiarowy)

Zrzut ekranu przedstawiający okno dialogowe Dodawanie kontrolera, w którym w polu Nazwa kontrolera jest wyświetlany domyślny kontroler 1.

Rysunek 02. Okno dialogowe Dodawanie kontrolera (kliknij, aby wyświetlić obraz o pełnym rozmiarze)

Zwróć uwagę, że pierwsza część nazwy kontrolera została wyróżniona w oknie dialogowym Dodawanie kontrolera . Każda nazwa kontrolera musi kończyć się sufiksem Kontroler. Na przykład można utworzyć kontroler o nazwie ProductController , ale nie kontroler o nazwie Product.

Jeśli utworzysz kontroler, który nie ma sufiksu Kontrolera , nie będzie można wywołać kontrolera. Nie rób tego - zmarnowałem niezliczone godziny mojego życia po popełnieniu tego błędu.

Lista 1 — Controllers\ProductController.cs

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

namespace MvcApplication1.Controllers
{
    public class ProductController : Controller
    {
        //
        // GET: /Product/

        public ActionResult Index()
        {
            return View();
        }
    }
}

Kontrolery należy zawsze tworzyć w folderze Controllers. W przeciwnym razie będziesz naruszać konwencje ASP.NET MVC i innych deweloperów będą miały trudniejsze informacje o aplikacji.

Metody akcji tworzenia szkieletu

Podczas tworzenia kontrolera możesz automatycznie generować metody akcji Tworzenie, Aktualizowanie i Szczegóły (zobacz Rysunek 3). Jeśli wybierzesz tę opcję, zostanie wygenerowana klasa kontrolera na liście 2.

Automatyczne tworzenie metod akcji

Rysunek 03. Automatyczne tworzenie metod akcji (kliknij, aby wyświetlić obraz pełnowymiarowy)

Lista 2 — Controllers\CustomerController.cs

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

namespace MvcApplication1.Controllers
{
    public class CustomerController : Controller
    {
        //
        // GET: /Customer/

        public ActionResult Index()
        {
            return View();
        }

        //
        // GET: /Customer/Details/5

        public ActionResult Details(int id)
        {
            return View();
        }

        //
        // GET: /Customer/Create

        public ActionResult Create()
        {
            return View();
        } 

        //
        // POST: /Customer/Create

        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Create(FormCollection collection)
        {
            try
            {
                // TODO: Add insert logic here

                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }

        //
        // GET: /Customer/Edit/5
 
        public ActionResult Edit(int id)
        {
            return View();
        }

        //
        // POST: /Customer/Edit/5

        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Edit(int id, FormCollection collection)
        {
            try
            {
                // TODO: Add update logic here
 
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }
    }
}

Te wygenerowane metody są metodami wycinków. Musisz dodać rzeczywistą logikę tworzenia, aktualizowania i wyświetlania szczegółów dla klienta samodzielnie. Ale metody wycinka zapewniają ładny punkt wyjścia.

Tworzenie klasy kontrolera

Kontroler MVC ASP.NET jest tylko klasą. Jeśli wolisz, możesz zignorować wygodne tworzenie szkieletu kontrolera programu Visual Studio i ręcznie utworzyć klasę kontrolera. Wykonaj następujące kroki:

  1. Kliknij prawym przyciskiem myszy folder Controllers i wybierz opcję menu Dodaj, Nowy element i wybierz szablon Klasa (zobacz Rysunek 4).
  2. Nadaj nowej klasie nazwę PersonController.cs i kliknij przycisk Dodaj .
  3. Zmodyfikuj wynikowy plik klasy, tak aby klasa dziedziczyła z podstawowej klasy System.Web.Mvc.Controller (zobacz Lista 3).

Tworzenie nowej klasy

Rysunek 04. Tworzenie nowej klasy (kliknij, aby wyświetlić obraz pełnowymiarowy)

Lista 3 — Controllers\PersonController.cs

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

namespace MvcApplication1.Controllers
{
    public class PersonController : System.Web.Mvc.Controller
    {
        public string Index()
        {
            return "Hello World!";
        }
    }
}

Kontroler w liście 3 uwidacznia jedną akcję o nazwie Index(), która zwraca ciąg "Hello world!". Tę akcję kontrolera można wywołać, uruchamiając aplikację i żądając adresu URL w następujący sposób:

http://localhost:40071/Person

Uwaga

Serwer ASP.NET Development Server używa losowego numeru portu (na przykład 40071). Podczas wprowadzania adresu URL w celu wywołania kontrolera należy podać odpowiedni numer portu. Numer portu można określić, umieszczając wskaźnik myszy na ikonie ASP.NET Development Server w obszarze powiadomień systemu Windows (w prawym dolnym rogu ekranu).