Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 13486|Odpoveď: 0

[ASP.NET] @RenderBody、@RenderSection、@RenderPage、Html.RenderPartial、Html.RenderActi...

[Kopírovať odkaz]
Zverejnené 19. 7. 2015 23:37:53 | | |
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.





Predchádzajúci:ASP.NET---- implementovať tlačidlo kliknutia alebo odkaz na zobrazenie prihlasovacieho okna
Budúci:Nastavte CheckBox List tak, aby sa riadok neobaloval
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com