Přidání kontroleru – představuje základy ASP.NET MVC

Scott Hanselman

Poznámka

Aktualizovaná verze, pokud je zde k dispozici tento kurz pomocí Visual Studio 2013. Nový kurz používá ASP.NET MVC 5, což oproti tomuto kurzu přináší mnoho vylepšení.

Toto je kurz pro začátečníky, který představuje základy ASP.NET MVC. Vytvoříte jednoduchou webovou aplikaci, která čte a zapisuje z databáze. Další kurzy a ukázky ASP.NET MVC najdete ve výukovém centru ASP.NET MVC .

MVC je zkratka pro Model, View, Controller. MVC je vzor pro vývoj aplikací tak, že každá část má jinou zodpovědnost.

  • Model: Data vaší aplikace
  • Zobrazení: Soubory šablon, které vaše aplikace použije k dynamickému generování odpovědí HTML.
  • Kontrolery: Třídy, které zpracovávají příchozí požadavky URL na aplikaci, načítají data modelu a pak určují šablony zobrazení, které vykreslují odpověď zpět klientovi.

V tomto kurzu probereme všechny tyto koncepty a ukážeme vám, jak je použít k sestavení aplikace.

Pojďme vytvořit nový kontroler tak, že v Průzkumníku řešení kliknete pravým tlačítkem na složku kontrolerů a vyberete Přidat kontroler.

AddControllerRightClick

Pojmenujte nový kontroler HelloWorldController a klikněte na Přidat.

Dialogové okno Přidat kontroler

Všimněte si, že v Průzkumník řešení na pravé straně byl vytvořen nový soubor s názvem HelloWorldController.cs a tento soubor je nyní otevřen v integrovaném vývojovém prostředí ( IDE).

HelloWorldControllerCode

Vytvořte dvě nové metody, které v nové veřejné třídě HelloWorldController vypadají takto. Jako příklad vrátíme řetězec HTML přímo z kontroleru.

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...";
        }  
    }
}

Váš kontroler má název HelloWorldController a nová metoda má název Index. Spusťte aplikaci znovu, stejně jako předtím (klikněte na tlačítko přehrát nebo stiskněte klávesu F5). Po spuštění prohlížeče změňte cestu na panelu Adresa tak, aby http://localhost:xx/HelloWorld xx bylo libovolné číslo, které váš počítač zvolil. Váš prohlížeč by teď měl vypadat jako na následujícím snímku obrazovky. V předchozí metodě jsme vrátili řetězec předaný metodě s názvem Content. Řekli jsme, že systém jenom vrací kód HTML, a to se povedlo!

ASP.NET MVC vyvolá různé třídy kontroleru (a různé metody Action v nich) v závislosti na příchozí adrese URL. Výchozí logika mapování používaná ASP.NET MVC používá k řízení spuštění kódu podobný formátu:

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

První část adresy URL určuje třídu Controller, která se má provést. Takže /HelloWorld se mapuje na třídu HelloWorldController. Druhá část adresy URL určuje metodu Action třídy, která se má provést. /HelloWorld/Index by tedy způsobilo spuštění metody Index() třídy HelloWorldController. Všimněte si, že jsme museli navštívit pouze /HelloWorld výše a byla implikovaná metoda Index. Je to proto, že metoda s názvem "Index" je výchozí metoda, která bude volána na kontroleru, pokud není explicitně zadána.

Toto je moje výchozí akce.

Teď se podívejme http://localhost:xx/HelloWorld/Welcome. na naši metodu Welcome, která se spustila a vrátila řetězec HTML.

Opět platí, že /[Controller]/[ActionName]/[Parameters] takže Controller je HelloWorld a Welcome je v tomto případě metoda. Parametry jsme ještě neudělali.

Toto je metoda akce Vítejte.

Pojďme ukázku trochu upravit, abychom mohli předat některé informace z adresy URL kontroleru, například takto: /HelloWorld/Welcome?name=Scott&numtimes=4. Změňte metodu Welcome tak, aby zahrnovala dva parametry, a aktualizujte ji následujícím způsobem. Všimněte si, že jsme použili funkci volitelného parametru jazyka C# k označení, že parametr numTimes by měl mít výchozí hodnotu 1, pokud se nepředá.

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

Spusťte aplikaci a podle potřeby změňte http://localhost:xx/HelloWorld/Welcome?name=Scott&numtimes=4 hodnotu name a numtimes. Systém automaticky mapoval pojmenované parametry z řetězce dotazu na panelu Adresa na parametry ve vaší metodě.

V obou těchto příkladech odvádí kontroler veškerou práci a vrací kód HTML přímo. Obvykle nechceme, aby kontrolery vracely kód HTML přímo , protože to je pro kódování velmi náročné. Místo toho obvykle použijeme samostatný soubor šablony zobrazení, který nám pomůže vygenerovat odpověď HTML. Podívejme se, jak to můžeme udělat. Zavřete prohlížeč a vraťte se do integrovaného vývojového prostředí.