Sdílet prostřednictvím


Přidání kontroleru (C#)

Rick Anderson

Poznámka

Aktualizovaná verze tohoto kurzu je k dispozici tady, která používá ASP.NET MVC 5 a Visual Studio 2013. Je bezpečnější, mnohem jednodušší sledovat a ukazuje více funkcí.

V tomto kurzu se naučíte základy sestavení webové aplikace ASP.NET MVC pomocí sady Microsoft Visual Web Developer 2010 Express Service Pack 1, což je bezplatná verze sady Microsoft Visual Studio. Než začnete, ujistěte se, že jste nainstalovali níže uvedené požadavky. Všechny z nich můžete nainstalovat kliknutím na následující odkaz: Instalační program webové platformy. Případně můžete požadavky nainstalovat jednotlivě pomocí následujících odkazů:

Pokud používáte Visual Studio 2010 místo Sady Visual Web Developer 2010, nainstalujte požadované součásti kliknutím na následující odkaz: Požadavky sady Visual Studio 2010.

K tomuto tématu je k dispozici projekt Visual Web Developer se zdrojovým kódem jazyka C#. Stáhněte si verzi jazyka C#. Pokud dáváte přednost jazyku Visual Basic, přepněte na verzi Visual Basic tohoto kurzu.

MVC je zkratka pro model-view-controller. MVC je vzor pro vývoj aplikací, které jsou dobře navrženy a snadno se spravují. Aplikace založené na MVC obsahují:

  • Kontrolery: Třídy, které zpracovávají příchozí požadavky na aplikaci, načítají data modelu a pak určují šablony zobrazení, které vrací odpověď klientovi.
  • Modely: Třídy, které představují data aplikace a které používají logiku ověřování k vynucení obchodních pravidel pro tato data.
  • Zobrazení: Soubory šablon, které vaše aplikace používá k dynamickému generování odpovědí HTML.

Všechny tyto koncepty probereme v této sérii kurzů a ukážeme vám, jak je použít k vytvoření aplikace.

Začněme vytvořením třídy kontroleru. V Průzkumník řešení klikněte pravým tlačítkem na složku Controllers (Řadiče) a pak vyberte Add Controller (Přidat kontroler).

Snímek obrazovky s oknem Průzkumník řešení Možnost Přidat je vybraná v nabídce kontroleru po kliknutí pravým tlačítkem myši. V dílčí nabídce je vybraný ovladač.

Pojmenujte nový kontroler HelloWorldController. Ponechte výchozí šablonu jako Prázdný kontroler a klikněte na Přidat.

AddHelloWorldController

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

Snímek obrazovky znázorňující kartu Hello World Kontroleru tečku a okno Průzkumník řešení Hello World Kontroler tečka c s je vybraná ve složce Kontrolery.

public class HelloWorldController Uvnitř bloku vytvořte dvě metody, které vypadají jako následující kód. Kontroler vrátí řetězec HTML jako příklad.

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

Váš kontroler má název HelloWorldController a první výše uvedená metoda má název Index. Pojďme ho vyvolat z prohlížeče. Spusťte aplikaci (stiskněte klávesu F5 nebo Ctrl+F5). V prohlížeči připojte k cestě na panelu Adresa "HelloWorld". (Například na následujícím obrázku je http://localhost:43246/HelloWorld.) Stránka v prohlížeči bude vypadat jako na následujícím snímku obrazovky. Ve výše uvedené metodě kód vrátil řetězec přímo. Řekli jste systému, aby vrátil nějaký KÓD HTML, a to se udělalo!

Snímek obrazovky s prohlížečem Toto je moje výchozí akce je text v okně.

ASP.NET MVC vyvolá různé třídy kontroleru (a různé metody akcí v nich) v závislosti na příchozí adrese URL. Výchozí logika mapování používaná ASP.NET MVC používá k určení kódu, který se má vyvolat, podobný formát:

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

První část adresy URL určuje třídu kontroleru, která se má provést. Takže /HelloWorld se mapuje na HelloWorldController třídu. Druhá část adresy URL určuje metodu akce ve třídě, která se má provést. Takže /HelloWorld/Index způsobí IndexHelloWorldController , že metoda třídy se spustí. Všimněte si, že jsme museli přejít pouze na /HelloWorld a Index metoda byla použita ve výchozím nastavení. Je to proto, že metoda s názvem Index je výchozí metoda, která bude volána na kontroleru, pokud není explicitně zadána.

Přejděte na adresu http://localhost:xxxx/HelloWorld/Welcome. Metoda Welcome se spustí a vrátí řetězec "Toto je metoda akce Vítejte...". Výchozí mapování MVC je /[Controller]/[ActionName]/[Parameters]. Pro tuto adresu URL je HelloWorldWelcome kontroler a je metodou akce. Zatím jste nepoužili [Parameters] část adresy URL.

Snímek obrazovky s prohlížečem Toto je metoda akce Vítejte je text v okně.

Pojďme příklad mírně upravit, abyste mohli předat některé informace o parametrech z adresy URL kontroleru (například /HelloWorld/Welcome?name=Scott&numtimes=4). Změňte Welcome metodu tak, aby zahrnovala dva parametry, jak je znázorněno níže. Všimněte si, že kód používá funkci optional-parameter jazyka C# k označení, že numTimes parametr by měl být ve výchozím nastavení 1, pokud se pro tento parametr nepředá žádná hodnota.

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

Spusťte aplikaci a přejděte na ukázkovou adresu URL (http://localhost:xxxx/HelloWorld/Welcome?name=Scott&numtimes=4). Můžete vyzkoušet různé hodnoty pro name a numtimes v adrese URL. Systém automaticky mapuje pojmenované parametry z řetězce dotazu na panelu Adresa na parametry ve vaší metodě.

Snímek obrazovky s prohlížečem Hello Scott Num Times je 4 je text v okně.

V obou těchto příkladech kontroler prováděl část VC MVC, tj. zobrazení a kontroler. Kontroler vrací kód HTML přímo. Obvykle nechcete, aby kontrolery vracely kód HTML přímo, protože kód je velmi těžkopádný. Místo toho obvykle použijeme samostatný soubor šablony zobrazení, který nám pomůže vygenerovat odpověď HTML. Pojďme se podívat, jak to můžeme udělat.