Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 13486|Svar: 0

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

[Kopiera länk]
Publicerad på 2015-07-19 23:37:53 | | |
1. RenderBody
I Razor-motorn finns ingen "huvudsida", istället placeras en sida kallad "layout" (_Layout.cshtml) i mappen för delad vy. På den här sidan ser du ett uttalande i taggen:
@RenderBody()
Faktum är att det fungerar på liknande sätt som serverkontrollen på huvudsidan, när en vy baserad på denna layoutsida skapas, sammanfogas innehållet i vyn med layoutsidan, och innehållet i den nyskapade vyn renderas mellan etiketterna via layoutsidans @RenderBody()-metod.
Denna metod kräver inga parametrar och kan bara förekomma en gång.
2. RenderPage
Som du kan gissa av namnet är denna metod att presentera en sida. Till exempel kan den fasta headern på en webbsida placeras separat i en delad vyfil och sedan anropas på denna metod på layoutsidan, enligt följande:
@RenderPage("~/Visningar/Delad/_Header.cshtml")
Med parametrar
@RenderPage("~/Views/Shared/_Header.cshtml",new{parm="my",parm2="du")
Ring sidan för att få parametrarna:
Få parametrarna skickade av RenderPage().
@PageData["param"]
3. Rendersektion
Layoutsidan har också begreppet sektion, det vill säga om en sektion definieras i en vymall kan den presenteras separat på följande sätt:
@RenderPage("~/Visningar/Delad/_Header.cshtml")
@RenderBody()
//模板里添加了一个节
@RenderSection("huvud")
Definiera naturligtvis också avsnittet i vyn, annars kommer ett undantag att inträffa:
@section huvud{
//do
}
För att förhindra undantag på grund av saknade sektioner kan du ge RenderSection() ett andra argument:
@RenderSection("SubMenu", falskt)
eller
@if (IsSectionDefined("SubMenu"))
{
@RenderSection("SubMenu", falskt)
}
annars
{
<p>SubMenu-sektionen är inte definierad!</p>
}
4.@Html.Partial
Partial skapar sin egen instans av TextWriter varje gång och cachelagrar innehållet i minnet. Slutligen, skicka all skrivarutdata till ett MvcString-objekt
Oftast använder vi @{ html.RenderPartial("details"); istället för @Html. Partiell
Skillnaden mellan RenderPage() och RenderPartial().
RenderPage()-anrop kan bara använda det för att skicka förbi data.
RenderPartial() kan använda viewdata, model och annan data.
Skillnaden mellan Html.RenderPartial och Html.RenderAction
Html.RenderPartial är lämplig för upprepade UserControls och behöver endast användas för att rendera innehåll genom modeller, eller för UserControls för annonser. Html.RenderAction anropar först Controller's Action-metoden, om denna UserControl behöver hämta data från databasen för att rendera (läsa databasen genom Action) är denna metod mer lämplig för denna tid.
5.Html.Partial("MyView")
Returnera en försöksström som en MvcHtmlString, enligt standardroutningsregler.
Renderar "MyView"-vyn till en MvcHtmlString. Den följer standardreglerna för visningsuppslagning (dvs. kontrollera aktuell katalog, sedan Shared directory).
Html.RenderPartial("MyView")

Liknande Html.Partial() är skillnaden att den skrivs direkt in i sidan utan caching. Gör samma sak som Html.Partial(), förutom att den skriver sitt output direkt till svarsströmmen. Detta är mer effektivt eftersom visningsinnehållet inte buffras i minnet. Men eftersom metoden inte returnerar någon utdata fungerar inte @Html.RenderPartial("MyView"). Du måste istället linda in anropet i ett kodblock: @{Html.RenderPartial("MyView"); }.
RenderPage("MyView.cshtml")

Returnerar en speciell vy med sökvägar, filnamn osv., och ger utdata direkt som Heml.RenderPartial() utan caching. Modellvariabler kan skickas. Renderar den angivna vyn (identifierad med sökväg och filnamn istället för vynamn) direkt till svarsströmmen, som Html.RenderPartial(). Du kan tillhandahålla vilken modell du vill till vyn genom att inkludera den som en andra parameter
RenderPage("MyView.cshtml",MyModel)

Jag föredrar
@RenderPage("_LayoutHeader.cshtml")Över
@{Html.RenderPartial("_LayoutHeader"); }Bara för att syntaxen är enklare och mer läsbar. Annars verkar det inte finnas några skillnader när det gäller funktionalitet.





Föregående:ASP.NET---- implementera en klickknapp eller länk för att öppna inloggningsdialogen
Nästa:Ställ in CheckBoxList så att raden inte lindas in
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com