Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 13486|Svar: 0

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

[Kopier link]
Opslået på 19/07/2015 23.37.53 | | |
1. RenderBody
I Razor-motoren findes der ikke en "masterside", i stedet placeres en side kaldet "layout" (_Layout.cshtml) i mappen med delt visning. På denne side vil du se en erklæring i tagget:
@RenderBody()
Faktisk fungerer det på samme måde som serverkontrollen på mastersiden; når en visning baseret på denne layoutside oprettes, bliver indholdet af visningen flettet med layoutsiden, og indholdet af den nyoprettede visning gengives mellem mærkaterne via layoutsidens @RenderBody()-metode.
Denne metode kræver ikke parametre og kan kun optræde én gang.
2. RenderPage
Som du kan gætte ud fra navnet, er denne metode at præsentere en side. For eksempel kan den faste header på en webside placeres separat i en delt visningsfil og derefter kaldes på denne måde på layout-siden, som følger:
@RenderPage("~/Visninger/Delt/_Header.cshtml")
Med parametre
@RenderPage("~/Views/Shared/_Header.cshtml",new{parm="my",parm2="you")
Kald siden for at få parametrene:
Få parametrene sendt af RenderPage().
@PageData["param"]
3. RenderSection
Layoutsiden har også begrebet sektion, det vil sige, hvis en sektion er defineret i en visningsskabelon, kan den præsenteres separat på følgende måde:
@RenderPage("~/Visninger/Delt/_Header.cshtml")
@RenderBody()
//模板里添加了一个节
@RenderSection ("hoved")
Definer selvfølgelig også sektionen i visningen, ellers vil der opstå en undtagelse:
@section hoved{
//do
}
For at forhindre undtagelser på grund af manglende sektioner kan du give RenderSection() et andet argument:
@RenderSection("SubMenu", falsk)
eller
@if (IsSectionDefined("SubMenu"))
{
@RenderSection("SubMenu", falsk)
}
ellers
{
<p>SubMenu-sektionen er ikke defineret!</p>
}
4.@Html.Partial
Partial opretter sin egen instans af TextWriter hver gang og cacher indholdet i hukommelsen. Til sidst sender du al writer-output til et MvcString-objekt
Ofte bruger vi @{ html.RenderPartial("details"); i stedet for @Html. Delvis
Forskellen mellem RenderPage() og RenderPartial().
RenderPage()-kald kan kun bruge det til at sende forbi data.
RenderPartial() kan bruge viewdata, model og andre data.
Forskellen mellem Html.RenderPartial og Html.RenderAction
Html.RenderPartial er velegnet til gentagne UserControls og behøver kun bruges til at gengive indhold gennem modeller eller til UserControls til annoncer. Html.RenderAction vil først kalde Controllerens Handling-metode; hvis denne UserControl skal hente data fra databasen for at kunne gengives (læse databasen gennem Handlingen), er denne metode mere egnet til dette tidspunkt.
5.Html.Partial("MyView")
Returner en forsøgsstrøm som en MvcHtmlString, i henhold til standard routingregler.
Renderer "MyView"-visningen til en MvcHtmlString. Den følger standardreglerne for visningsopslag (dvs. tjek aktiel mappe, og derefter tjek den delte mappe).
Html.RenderPartial("MyView")

Ligesom Html.Partial() er forskellen, at det skrives direkte ind på siden uden caching. Det gør det samme som Html.Partial(), bortset fra at den skriver sit output direkte til svarstrømmen. Dette er mere effektivt, fordi visningsindholdet ikke bufferes i hukommelsen. Men fordi metoden ikke returnerer noget output, vil @Html.RenderPartial("MyView") ikke fungere. Du skal i stedet pakke kaldet ind i en kodeblok: @{Html.RenderPartial("MyView"); }.
RenderPage("MyView.cshtml")

Returnerer en særlig visning med stier, filnavne osv., og udleverer direkte som Heml.RenderPartial() uden caching. modelvariabler kan overleveres. Renderer den angivne visning (identificeret ved sti og filnavn i stedet for visningsnavn) direkte til responsstrømmen, som Html.RenderPartial(). Du kan levere enhver model, du ønsker, til visningen ved at inkludere den som en anden parameter
RenderPage("MyView.cshtml",MyModel)

Jeg foretrækker det
@RenderPage("_LayoutHeader.cshtml")Over
@{Html.RenderPartial("_LayoutHeader"); }Kun fordi syntaksen er lettere og mere læsbar. Udover det ser der ikke ud til at være nogen forskelle i funktionaliteten.





Tidligere:ASP.NET---- implementere en klikknap eller et link, der åbner login-dialogen
Næste:Sæt CheckBoxList til ikke at wrappe linjen
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com