Mvc 5, care lucrează cu razor în vedere

În articolul precedent am avut ocazia să creăm un mecanism special de vizualizare, implementând doar două interfețe. Trebuie să recunoaștem că, în cele din urmă, am obținut o simplă aparență a unui mecanism care a generat vederi destul de ciudate, dar ați văzut că conceptul de extensibilitate MVC este susținut pe toată conducta de procesare a interogărilor.







Complexitatea mecanismului de vizualizare este introdusă de sistemul de vizualizare a șabloanelor, care include fragmente de cod, suporta dispuneri și este compilat pentru a optimiza performanța. Nu am făcut așa ceva în mecanismul nostru simplu de vizualizare și, în general, nu ar trebui să facem acest lucru, deoarece mecanismul Razor se ocupă de tot.

Exemple de aplicații

Am creat un nou proiect MVC numit WorkingWithRazor utilizând șablonul Golire și marcând caseta de selectare MVC din dosarul Adăugare dosare și referințe de bază pentru secțiune. Controlerul de acasă este adăugat la proiect, al cărui cod este afișat în exemplu:

În plus, dosarul / Views / Home are un nume numit Index.cshtml. Conținutul acestui fișier de vizualizare este după cum urmează:

Vizualizarea vederilor Razor

Mvc 5, care lucrează cu razor în vedere

pe Windows 7 și Windows 8.

Găsirea fișierului de cod generat pentru o anumită vizualizare necesită o atenție deosebită. De obicei, există mai multe dosare cu nume criptice, pe lângă numele fișierelor .cs nu se potrivesc cu numele claselor pe care le conțin. De exemplu, clasa generat pentru prezentarea în exemplul de mai sus, a fost găsit într-un fișier numit „App_Web_o0mtztby.0.cs“ din dosarul „rădăcină \ 321dfcd8 \ 64cbe7dd“. Următorul exemplu arată un cod ușor ordonat pentru această clasă:







Mai întâi de toate, rețineți că clasa este derivată din WebViewPage. unde T este tipul de model (WebViewPage în acest exemplu). Reprezentările puternic tastate sunt acceptate într-un mod similar. În plus, uitați-vă la numele clasei generate - _Page_Views_Home_Index_cshtml. După cum puteți vedea, numele clasei a codificat calea către fișierul de prezentare. În acest fel, Razor afișează cereri pentru vizualizări pe instanțe de clase compilate.

În metoda Execute (), operatorii și elementele de vizualizare sunt procesate. Fragmentele de cod precedate de un simbol sunt exprimate direct ca instrucțiuni C #. Elementele HTML sunt procesate folosind metoda WriteLiteral (). care scrie conținutul parametrului la rezultat așa cum este specificat. Aceasta diferă de metoda Write (), care este folosită pentru variabilele C # și codifică valorile șirului pentru utilizarea sigură pe o pagină HTML.

Metodele Write () și WriteLiteral () scriu conținutul într-un obiect TextWriter. Acesta este același obiect care este trecut la metoda IView.Render (), așa cum se arată în articolul precedent. Scopul vizualizării Razor compilat este generarea de conținut static și dinamic și trimiterea acestuia către client prin TextWriter. Acest lucru este util să vă amintiți când sunt luate în considerare metodele HTML auxiliare.

Configurați locațiile pentru a căuta vizualizări

Când căutați o vizualizare, mecanismul de vizualizare Razor urmează un acord standard. De exemplu, dacă solicitați o vizualizare index asociată cu controlerul de acasă, motorul Razor se uită la următoarea listă de vizualizări:

După cum știți deja, Razor nu caută fișierele de vizualizare de pe disc, deoarece acestea sunt deja compilate în clase C #. Motorul Razor caută clase compilate corespunzătoare acestor reprezentări. Fișierele Cshtml sunt șabloane care conțin instrucțiuni C #, iar fișierele .vbhtml conțin instrucțiuni în Visual Basic.

Pentru a modifica fișierele de vizualizare pe care le caută Razor, puteți crea o subclasă a clasei RazorViewEngine. Clasa specificată este implementarea interfeței IViewEngine în Razor. Acesta este construit pe o serie de clase de bază care definesc un set de proprietăți care indică ce fișiere de vizualizare vor fi căutate. Aceste proprietăți sunt descrise în tabelul de mai jos:

Proprietățile motorului de randare Razor asociat cu căutarea de vizualizări







Trimiteți-le prietenilor: