Megosztás a következőn keresztül:


Új vezérlő hozzáadása

készítette : Rick Anderson

Megjegyzés:

Az oktatóanyag frissített verziója itt érhető el a Visual Studio legújabb verziójával. Az új oktatóanyag ASP.NET Core MVC-t használ, amely számos fejlesztést biztosít az oktatóanyaghoz.

Ez az oktatóanyag a vezérlőkkel és nézetekkel rendelkező ASP.NET Core MVC-t mutatja be. A Razor Pages egy új alternatíva a ASP.NET Core-ban, amely egy lapalapú programozási modell, amely megkönnyíti és hatékonyabbá teszi a webes felhasználói felület készítését. Javasoljuk, hogy az MVC-verzió előtt próbálja ki a Razor Pages oktatóanyagot. A Razor Pages oktatóanyaga:

  • Könnyebb követni.
  • További funkciókkal is foglalkozik.
  • Az új alkalmazásfejlesztés előnyben részesített megközelítése.

Az MVC a modellnézet-vezérlőt jelenti. Az MVC egy jól kivitelezett, tesztelhető és könnyen karbantartható alkalmazások fejlesztésére szolgáló minta. Az MVC-alapú alkalmazások a következőket tartalmazzák:

  • M odels: Az alkalmazás adatait képviselő osztályok, amelyek érvényesítési logikával kényszerítik ki az adott adatokra vonatkozó üzleti szabályokat.
  • V iews: Sablonfájlok, amelyeket az alkalmazás a HTML-válaszok dinamikus létrehozására használ.
  • C ontrollerek: A bejövő böngészők kéréseit kezelő osztályok lekérik a modelladatokat, majd olyan nézetsablonokat ad meg, amelyek választ adnak a böngészőnek.

Ebben az oktatóanyag-sorozatban ezeket a fogalmakat fogjuk bemutatni, és bemutatjuk, hogyan használhatja őket egy alkalmazás létrehozásához.

Kezdjük egy vezérlőosztály létrehozásával. A Megoldáskezelőben kattintson a jobb gombbal a Vezérlők mappára, majd a Hozzáadás, majd a Vezérlőparancsra.

Képernyőkép a Megoldáskezelő ablakról. Megnyílik a Vezérlők jobb gombbal a menü, és megnyílik a Hozzáadás almenü.

Az Állványzat hozzáadása párbeszédpanelen kattintson az MVC 5 Vezérlő – Üres, majd a Hozzáadás gombra.

Képernyőkép az Állványzat hozzáadása párbeszédpanelről. Az M V C 5 Vezérlő üres elem van kiválasztva.

Nevezze el az új vezérlőt "HelloWorldController" néven, és kattintson a Hozzáadás gombra.

vezérlő hozzáadása

Figyelje meg a Megoldáskezelőben , hogy egy új fájl lett létrehozva HelloWorldController.cs és egy új mappa, a Views\HelloWorld névvel. A vezérlő nyitva van az IDE-ben.

Képernyőkép a Hello World Controller pont c s lapjának megnyitásáról. A Megoldáskezelőben a Hello World Controller pont c s almappája és a Hello World almappája pirosan van körbekarikázva.

Cserélje le a fájl tartalmát a következő kódra.

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

A vezérlő metódusai egy HTML-sztringet adnak vissza példaként. A vezérlő neve HelloWorldController és az első metódus neve Index. Hívjuk meg egy böngészőből. Futtassa az alkalmazást (nyomja le az F5 vagy a Ctrl+F5 billentyűkombinációt). A böngészőben fűzze hozzá a "HelloWorld" elemet a címsor elérési útjához. (Például az alábbi ábrán ez a http://localhost:1234/HelloWorld.) A böngészőben lévő oldal az alábbi képernyőképhez hasonlóan fog kinézni. A fenti metódusban a kód egy sztringet adott vissza közvetlenül. Azt mondtad a rendszernek, hogy csak néhány HTML-t ad vissza, és így is történt!

Képernyőkép a helyi gazdagép lapról az alábbi szöveggel: Ez az alapértelmezett művelet az ablakban.

ASP.NET MVC a bejövő URL-címtől függően különböző vezérlőosztályokat (és bennük különböző műveleti módszereket) hív meg. A ASP.NET MVC által használt alapértelmezett URL-útválasztási logika az alábbi formátumot használja annak meghatározásához, hogy melyik kódot kell meghívni:

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

A App_Start/RouteConfig.cs fájlban adja meg az útválasztás formátumát.

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
}

Amikor futtatja az alkalmazást, és nem ad meg URL-szegmenseket, alapértelmezés szerint a "Kezdőlap" vezérlő és a fenti kódban megadott "Index" akció metódus lesz meghívva.

Az URL-cím első része határozza meg a végrehajtandó vezérlőosztályt. A /HelloWorld tehát megfelel az HelloWorldController osztálynak. Az URL-cím második része határozza meg a végrehajtandó osztály műveletmetódusát. A /HelloWorld/Index tehát az Index osztály metódusának HelloWorldController végrehajtását okozná. Figyelje meg, hogy csak a /HelloWorld webhelyre kellett tallóznunk, és a Index metódust alapértelmezés szerint használták. Ennek az az oka, hogy az elnevezett Index metódus az alapértelmezett metódus, amelyet a rendszer meghív egy vezérlőn, ha nincs explicit módon megadva. Az URL-szegmens (Parameters) harmadik része az útvonaladatokhoz tartozik. Az oktatóanyag későbbi részében az útvonaladatokat fogjuk látni.

Böngésszen a következő címen: http://localhost:xxxx/HelloWorld/Welcome. A Welcome metódus futtatja és visszaadja az "Ez az üdvözlő művelet metódusa..." sztringet. Az alapértelmezett MVC-megfeleltetés a következő /[Controller]/[ActionName]/[Parameters]: . Ebben az URL-címben a vezérlő HelloWorld, a Welcome pedig a műveleti módszer. Még nem használta az URL [Parameters] részét.

Képernyőkép a localhost lapról a következő szöveggel: Ez az üdvözlő akció metódus az ablakban.

Módosítsuk kissé a példát, hogy az URL-címről a vezérlőnek továbbíthassunk néhány paraméterinformációt (például /HelloWorld/Welcome?name=Scott&numtimes=4). Módosítsa a metódust Welcome úgy, hogy két paramétert tartalmazzon az alábbiak szerint. Vegye figyelembe, hogy a kód a C# opcionális paraméter funkciójával jelzi, hogy a numTimes paraméternek 1-nek kell lennie, ha az adott paraméterhez nem ad értéket.

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

Megjegyzés:

Biztonsági megjegyzés: A fenti kód a HttpUtility.HtmlEncode használatával védi az alkalmazást a rosszindulatú bemenetektől (nevezetesen JavaScript). További információ : Hogyan védheti meg a szkripteket a webalkalmazásokban a HTML-kódolás sztringekre való alkalmazásával.

Futtassa az alkalmazást, és keresse meg a példa URL-címét (http://localhost:xxxx/HelloWorld/Welcome?name=Scott&numtimes=4). Az URL-ben kipróbálhat különböző értékeket a name és numtimes helyére. A ASP.NET MVC modellkötési rendszere automatikusan leképezi a névvel ellátott paramétereket a címsorban lévő lekérdezési sztringből a metódus paramétereire.

Képernyőkép egy böngészőablakról, amelyen az URL a következő: localhost:1234/Hello World/Üdvözöljük?kérdőjel név=Scott és num times=4. Az ablakban a megjelenített szöveg: Hello Scott, a Num Times értéke 4.

A fenti mintában a rendszer nem használja az URL-szegmenst ( Parameters) , a name paramétereket pedig numTimeslekérdezési sztringekként adja át. A? A fenti URL-ben a kérdőjel elválasztóként működik, majd következnek a lekérdezési sztringek. A & karakter elválasztja a lekérdezési láncokat.

Cserélje le az üdvözlő metódust a következő kódra:

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

Futtassa az alkalmazást, és adja meg a következő URL-címet: http://localhost:xxx/HelloWorld/Welcome/1?name=Scott

Képernyőkép egy böngészőablakról, amelyen az URL localhost:1234/Hello World/Welcome/1?name=scott. Az ablakban a szöveg: Hello Scott ID 1.

Ezúttal a harmadik URL-szegmens megfelelt az útvonalparaméternek ID. : a Welcome műveletmetódus egy olyan paramétert (ID) tartalmaz, amely megfelel a metódus URL-specifikációjának RegisterRoutes .

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
}

ASP.NET MVC-alkalmazásokban jellemzőbb a paraméterek továbbítása útvonaladatokként (mint a fenti azonosítóval), mint a lekérdezési sztringek átadása. Az URL-ben hozzáadhat egy útvonalat, amely paramétereként veszi figyelembe mind a name, mind a numtimes útvonaladatokat. A App_Start\RouteConfig.cs fájlban adja hozzá a "Hello" útvonalat:

public class RouteConfig
{
   public static void RegisterRoutes(RouteCollection routes)
   {
      routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

      routes.MapRoute(
          name: "Default",
          url: "{controller}/{action}/{id}",
          defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
      );

      routes.MapRoute(
           name: "Hello",
           url: "{controller}/{action}/{name}/{id}"
       );
   }
}

Futtassa az alkalmazást, és böngésszen el a /localhost:XXX/HelloWorld/Welcome/Scott/3 címre.

Képernyőkép egy böngészőablakról az URL localhost:1234/Hello World/Welcome/Scott/3 útvonallal. Az ablak szövege: Hello Scott ID 3.

Sok MVC-alkalmazás esetében az alapértelmezett útvonal jól működik. Az oktatóanyag későbbi részében megtanulhatja, hogyan továbbíthat adatokat a modellkötővel, és ehhez nem kell módosítania az alapértelmezett útvonalat.

Ezekben a példákban a vezérlő az MVC "VC" részét végzi – vagyis a nézet és a vezérlő együtt látja el feladatát. A vezérlő közvetlenül a HTML-t adja vissza. Általában nem szeretné, ha a vezérlők közvetlenül HTML-t adnak vissza, mivel ez nagyon megnehezíti a kódolást. Ehelyett általában egy külön nézetsablonfájlt használunk a HTML-válasz létrehozásához. Nézzük meg a következőt, hogyan tehetjük ezt meg.