Tworzenie kontrolera (C#)
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).
Rysunek 01. Dodawanie nowego kontrolera (kliknij, aby wyświetlić obraz pełnowymiarowy)
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.
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:
- Kliknij prawym przyciskiem myszy folder Controllers i wybierz opcję menu Dodaj, Nowy element i wybierz szablon Klasa (zobacz Rysunek 4).
- Nadaj nowej klasie nazwę PersonController.cs i kliknij przycisk Dodaj .
- Zmodyfikuj wynikowy plik klasy, tak aby klasa dziedziczyła z podstawowej klasy System.Web.Mvc.Controller (zobacz Lista 3).
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).