|
|
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-dialogenNæste:Sæt CheckBoxList til ikke at wrappe linjen
|