MVC 5, borotvával együtt
Az előző cikkben tudtunk hozzon létre egy speciális megjelenítő motor, felismerve csak két interfész. El kell ismerni, hogy a végén kaptunk egy egyszerű hasonlóság mechanizmus hozza létre elég ügyetlen teljesítményét, de láttuk, hogy a koncepció MVC bővíthetőség fenntartása az egész csővezeték kéréseket.
A megjelenítési mechanizmus komplexitását a sablon-megjelenítő rendszer vezeti be, amely magában foglalja a kódrészleteket, támogatja az elrendezéseket, és a teljesítmény optimalizálására fordítódik. Egyszerű vizualizációs mechanizmusunkban nem csináltunk ilyesmit, és nagyjából ezt nem szabad megtennünk, mert a Razor-mechanizmus mindent gondoskodik.
Minta alkalmazás
Létrehoztunk egy új MVC elnevezésű projekt WorkingWithRazor az üres sablon (üres) és az MVC védjegy dobozok alatt hozzáadása mappák és mag referenciák (Add mappák és az alapvető hivatkozások). A projekt hozzáadjuk a vezérlő Home, a kód van feltüntetve a következő példa:
Ezenkívül a / Views / Home mappában van egy nézet Index.cshtml néven. A nézetfájl tartalma a következő:
A Razor nézetek megjelenítése
a Windows 7 és a Windows 8 rendszeren.
Megtalálása kódfájlhoz keletkezett egy bizonyos bemutatását, igényel némi figyelmet. Általában van egy csomó mappák rejtélyes nevek mellett a nevét .cs fájlok nem egyeznek a nevek ezekben osztályok. Például, az osztály keletkezett előadás a fenti példában találtak egy fájl neve „App_Web_o0mtztby.0.cs” a mappában „root \ 321dfcd8 \ 64cbe7dd”. Az alábbi példa egy kissé egyszerűsített kódot ebben az osztályban:
Először is, vegye figyelembe, hogy az osztály a WebViewPage-ból származik
Az Execute () metódusban a kezelőket és a nézetelemeket feldolgozzák. A kódfájlokat, amelyeket egy szimbólum előz meg, kifejezetten C # állításként fejeződnek ki. A HTML elemei feldolgozása a WriteLiteral () módszerrel történik. amely a paraméter tartalmát a megadott eredményre írja. Ez különbözik a Write () metódustól, amelyet C # változókhoz használnak és HTML-oldalon biztonságos felhasználásra sztringértékeket kódol.
Az Write () és a WriteLiteral () metódusok a TextWriter objektumhoz írják a tartalmat. Ez ugyanaz az objektum, amely átkerül az IView.Render () metódushoz, amint azt az előző cikk is mutatja. A lefordított Razor nézet célja, hogy statikus és dinamikus tartalmat generáljon, és a TextWriter segítségével küldje el az ügyfélnek. Ez hasznos megjegyezni, hogy a segéd HTML-módszereket figyelembe vesszük.
Konfigurálja a helyeket a nézetek kereséséhez
A nézet keresése során a Razor megjelenítési mechanizmusa szabványos megállapodást követ. Ha például a Home Controllerhez társított indexnézetet kér, a Razor motor a következő nézetlistát néz ki:
Mint már tudjuk, a Razor valójában nem keresi a lemezen lévő nézetfájlokat, mivel már C # osztályokba rendeződnek. A Razor motor keresi az ezeknek a reprezentációknak megfelelő összeállított osztályokat. A .cshtml fájlok olyan sablonok, amelyek C # utasításokat tartalmaznak, és a .vbhtml fájlok Visual Basic utasításokat tartalmaznak.
A Razor által keresett nézetfájlok módosításához hozhat létre egy RazorViewEngine osztály alosztályát. A megadott osztály a Razvó IViewEngine interfészének megvalósítása. Ez olyan alapcsoportokra épül, amelyek meghatározzák a tulajdonságok halmazát, amelyek jelzik, hogy melyik nézetfájlokat fogják keresni. Ezeket a tulajdonságokat az alábbi táblázat írja le:
A Razor renderelő motor tulajdonságai a nézetek kereséséhez társítva