1. RenderBody V engine Razor neexistuje "hlavná stránka", namiesto toho je v priečinku zdieľaného zobrazenia umiestnená stránka s názvom "layout" (_Layout.cshtml). Na tejto stránke uvidíte vyhlásenie v tagu: @RenderBody() V skutočnosti funguje podobne ako ovládanie servera na hlavnej stránke, keď sa vytvorí pohľad založený na tejto stránke rozloženia, obsah pohľadu sa zlúči so stránkou rozloženia a obsah novo vytvoreného pohľadu sa zobrazí medzi štítkami pomocou metódy @RenderBody() stránky rozloženia. Táto metóda nevyžaduje parametre a môže sa objaviť iba raz. 2. RenderPage Ako môžete uhádnuť z názvu, táto metóda spočíva v prezentácii stránky. Napríklad pevná hlavička na webovej stránke môže byť umiestnená samostatne v súbore zdieľaného zobrazenia a potom vyvolaná touto metódou na stránke rozloženia, nasledovne: @RenderPage("~/Views/Shared/_Header.cshtml") S parametrami @RenderPage("~/Views/Shared/_Header.cshtml",new{parm="my",parm2="you") Zavolajte na stránku, aby ste získali parametre: Získajte parametre prenášané cez RenderPage(). @PageData["param"] 3. RenderSekcia Rozloženie stránky má tiež koncept sekcie, teda ak je sekcia definovaná v šablóne zobrazenia, môže byť prezentovaná samostatne nasledovným spôsobom: @RenderPage("~/Views/Shared/_Header.cshtml") @RenderBody()
//模板里添加了一个节 @RenderSection("hlava") Samozrejme, definujte aj sekciu vo výhľade, inak nastane výnimka: @section head{
//do
} Aby ste predišli výnimkám kvôli chýbajúcim sekciám, môžete RenderSection() pridať druhý argument: @RenderSection("SubMenu", nepravda) alebo @if (IsSectionDefined("SubMenu"))
{ @RenderSection("SubMenu", nepravda)
} else
{ <p>Sekcia Podmenu nie je definovaná!</p>
}
4.@Html.Partial Partial zakaždým vytvorí vlastnú inštanciu TextWriteru a obsah uloží do pamäte. Nakoniec pošlite všetky výstupy zapisovateľa do objektu MvcString Častejšie používame @{ html.RenderPartial("details"); namiesto @Html. Parciálne Rozdiel medzi RenderPage() a RenderPartial(). Volania RenderPage() ho môžu použiť len na prenos ďalších dát. RenderPartial() dokáže používať viewdata, model a ďalšie dáta. Rozdiel medzi Html.RenderPartial a Html.RenderAction Html.RenderPartial je vhodný pre opakované UserControls a stačí ho použiť len na renderovanie obsahu cez modely alebo na UserControls pre reklamy. Html.RenderAction najskôr zavolá metódu Controller's Action, ak tento UserControl potrebuje získať dáta z databázy na renderovanie (čítať databázu cez Action), táto metóda je pre tento čas vhodnejšia. 5.Html.Partial("MyView") Vráťte stream pokusov ako MvcHtmlString, podľa štandardných smerovacích pravidiel. Zobrazuje pohľad "MyView" na MvcHtmlString. Riadi sa štandardnými pravidlami vyhľadávania zobrazení (t.j. skontrolujte aktuálny adresár, potom skontrolujte zdieľaný adresár). Html.RenderPartial("MyView")
Podobne ako Html.Partial(), rozdiel je v tom, že sa zapisuje priamo na stránku bez ukladania do vyrovnávacej pamäte. Robí to isté ako Html.Partial(), s tým rozdielom, že svoj výstup zapisuje priamo do prúdu odpovedí. To je efektívnejšie, pretože obsah pohľadu nie je uložený v pamäti. Avšak, keďže metóda nevracia žiadny výstup, @Html.RenderPartial("MyView") nebude fungovať. Namiesto toho musíte volanie zabaliť do kódového bloku: @{Html.RenderPartial("MyView"); }. RenderPage("MyView.cshtml")
Vráti špeciálny pohľad s cestami, názvami súborov a podobne a výstupuje priamo ako Heml.RenderPartial() bez cache. Modelové premenné môžu byť prenášané. Zobrazuje špecifikovaný pohľad (identifikovaný podľa cesty a názvu súboru namiesto názvu zobrazenia) priamo do prúdu odpovedí, podobne ako Html.RenderPartial(). Do zobrazenia môžete pridať akýkoľvek model, ktorý chcete, ak ho zahrniete ako druhý parameter RenderPage("MyView.cshtml",MyModel)
Uprednostňujem
@RenderPage("_LayoutHeader.cshtml")Koniec @{Html.RenderPartial("_LayoutHeader"); }Len preto, že syntax je jednoduchšia a čitateľnejšia. Inak sa nezdá, že by boli funkčne rozdiely.
|