Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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.
Az Állványzat hozzáadása párbeszédpanelen kattintson az MVC 5 Vezérlő – Üres, majd a Hozzáadás gombra.
Nevezze el az új vezérlőt "HelloWorldController" néven, és kattintson a Hozzáadás gombra.
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.
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!
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.
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.
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
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.
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.