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.
|