1. RenderBody I Razor-motoren finnes det ingen "hovedside", i stedet plasseres en side kalt "layout" (_Layout.cshtml) i mappen for delt visning. På denne siden vil du se en uttalelse i taggen: @RenderBody() Faktisk fungerer det på lignende måte som serverkontrollen på hovedsiden; når en visning basert på denne layoutsiden opprettes, slås innholdet i visningen sammen med layoutsiden, og innholdet i den nyopprettede visningen gjengis mellom etikettene via layoutsidens @RenderBody()-metode. Denne metoden krever ikke parametere og kan bare vises én gang. 2. RenderPage Som du kan gjette ut fra navnet, er denne metoden å presentere en side. For eksempel kan den faste headeren på en nettside plasseres separat i en delt visningsfil, og deretter kalles på denne måten på layoutsiden, som følger: @RenderPage("~/Visninger/Delt/_Header.cshtml") Med parametere @RenderPage("~/Views/Shared/_Header.cshtml",new{parm="my",parm2="du") Ring siden for å få parameterne: Få parameterne sendt av RenderPage(). @PageData["param"] 3. Gjengivelsesseksjon Layoutsiden har også konseptet seksjon, det vil si at hvis en seksjon er definert i en visningsmal, kan den presenteres separat på følgende måte: @RenderPage("~/Visninger/Delt/_Header.cshtml") @RenderBody()
//模板里添加了一个节 @RenderSection ("hode") Selvfølgelig, definer også seksjonen i visningen, ellers vil et unntak forekomme: @section hode{
//do
} For å forhindre unntak på grunn av manglende seksjoner, kan du gi RenderSection() et andre argument: @RenderSection("SubMenu", feil) eller @if (IsSectionDefined("SubMenu"))
{ @RenderSection("SubMenu", feil)
} ellers
{ <p>SubMenu-seksjonen er ikke definert!</p>
}
4.@Html.Partial Partial lager sin egen instans av TextWriter hver gang og cacher innholdet i minnet. Til slutt, send all skriverutdata til et MvcString-objekt Som oftest bruker vi @{ html.RenderPartial("details"); i stedet for @Html. Delvis Forskjellen mellom RenderPage() og RenderPartial(). RenderPage()-kall kan kun bruke det til å sende forbi data. RenderPartial() kan bruke viewdata, model og annen data. Forskjellen mellom Html.RenderPartial og Html.RenderAction Html.RenderPartial egner seg for gjentatte UserControls, og trenger kun å brukes for å gjengi innhold gjennom modeller, eller for UserControls for annonser. Html.RenderAction vil først kalle Controller's Action-metoden; hvis denne UserControl trenger å hente data fra databasen for å rendre (lese databasen gjennom Handlingen), er denne metoden mer egnet for denne tiden. 5.Html.Delvis ("MyView") Returner en forsøksstrøm som en MvcHtmlString, i henhold til standard rutingsregler. Gjengir "MyView"-visningen til en MvcHtmlString. Den følger standardreglene for visningsoppslag (dvs. sjekk nåværende katalog, deretter Delt katalog). Html.RenderPartial("MyView")
På samme måte som Html.Partial(), er forskjellen at det skrives direkte inn på siden uten caching. Gjør det samme som Html.Partial(), bortsett fra at den skriver utdataene direkte til responsstrømmen. Dette er mer effektivt, fordi visningsinnholdet ikke er bufret i minnet. Men fordi metoden ikke returnerer noen utdata, vil ikke @Html.RenderPartial("MyView") fungere. Du må pakke inn kallet i en kodeblokk i stedet: @{Html.RenderPartial("MyView"); }. RenderPage("MyView.cshtml")
Returnerer en spesiell visning med stier, filnavn osv., og gir direkte resultater som Heml.RenderPartial() uten caching. Modellvariabler kan overføres. Gjengir den spesifiserte visningen (identifisert med sti og filnavn i stedet for visningsnavn) direkte til responsstrømmen, som Html.RenderPartial(). Du kan levere hvilken som helst modell du ønsker til visningen ved å inkludere den som en andre parameter RenderPage("MyView.cshtml",MyModel)
Jeg foretrekker det
@RenderPage("_LayoutHeader.cshtml")Over @{Html.RenderPartial("_LayoutHeader"); }Bare fordi syntaksen er enklere og det er mer lesbart. Utover det ser det ikke ut til å være noen forskjeller når det gjelder funksjonalitet.
|