1. RenderBody Razor-moottorissa ei ole "pääsivua", vaan jaettuun näkymäkansioon sijoitetaan sivu nimeltä "layout" (_Layout.cshtml). Tällä sivulla näet lauseen tagissa: @RenderBody() Itse asiassa se toimii samankaltaisesti kuin pääsivun palvelinkontrolli: kun näkymä luodaan tämän asettelusivun pohjalta, näkymän sisältö yhdistetään asettelusivuun ja uuden kuvan sisältö renderöidään tunnisteiden välillä asettelusivun @RenderBody()-menetelmällä. Tämä menetelmä ei vaadi parametreja ja voi esiintyä vain kerran. 2. RenderPage Kuten nimestä voi päätellä, tämä tapa on esittää sivu. Esimerkiksi kiinteä otsikko verkkosivulla voidaan sijoittaa erikseen jaettuun näkymätiedostoon ja kutsua tällä menetelmällä asettelusivulla seuraavasti: @RenderPage("~/Views/Shared/_Header.cshtml") Parametreilla @RenderPage("~/Views/Shared/_Header.cshtml",new{parm="my",parm2="you") Soita sivulle saadaksesi parametrit: Saat parametrit RenderPage():n kautta. @PageData["param"] 3. RenderSection Asettelusivulla on myös osion käsite, eli jos osio määritellään näkymämallissa, se voidaan esittää erikseen seuraavasti: @RenderPage("~/Views/Shared/_Header.cshtml") @RenderBody()
//模板里添加了一个节 @RenderSection("Head") Tietenkin määrittele myös osio näkymässä, muuten poikkeus tapahtuu: @section pää{
//do
} Välttääksesi poikkeuksia, jotka johtuvat puuttuvista osioista, voit antaa RenderSection():lle toisen argumentin: @RenderSection("SubMenu", väärin) tai @if (IsSectionDefined("Alivalikko"))
{ @RenderSection("SubMenu", väärin)
} else
{ <p>Alivalikko-osio ei ole määritelty!</p>
}
4.@Html.Partial Partial luo oman TextWriter-instanssinsa joka kerta ja tallentaa sisällön muistiin. Lopuksi, lähetä kaikki kirjoittajan tulos MvcString-objektille Useimmiten käytämme @{ html.RenderPartial("tiedot"); sen sijaan, että olisi @Html. Osittainen Ero RenderPage():n ja RenderPartial():n välillä. RenderPage()-kutsut voivat käyttää sitä vain ohitetun datan välittämiseen. RenderPartial() voi käyttää viewdataa, mallia ja muuta dataa. Ero Html.RenderPartilinin ja Html.RenderActionin välillä Html.RenderPartial sopii toistuviin UserControl-toimintoihin, ja sitä tarvitsee käyttää vain sisällön renderöintiin mallien kautta tai UserControlien käyttöön mainoksia varten. Html.RenderAction kutsuu ensin Controller's Action -metodin, jos tämä UserControl tarvitsee dataa tietokannasta renderöidäkseen (lukeakseen tietokannan Toiminnon kautta), tämä menetelmä sopii paremmin tähän aikaan. 5.Html.Osittainen("MyView") Palauta yrityslähetys MvcHtmlString-muodossa, noudattaen standardeja reitityssääntöjä. Renderöi "MyView"-näkymän MvcHtmlStringiksi. Se noudattaa standardisääntöjä näkymähakuun (eli tarkista nykyinen hakemisto ja sitten jaettu hakemisto). Html.RenderPartial("MyView")
Samoin kuin Html.Partial(), ero on siinä, että se kirjoitetaan suoraan sivulle ilman välimuistia. Toimii samalla tavalla kuin Html.Partial(), paitsi että se kirjoittaa tuloksensa suoraan vastausvirtaan. Tämä on tehokkaampaa, koska näkymän sisältö ei ole puskuroitu muistiin. Koska metodi ei kuitenkaan anna tulosta, @Html.RenderPartial("MyView") ei toimi. Kutsu täytyy kääriä koodilohkoon: @{Html.RenderPartial("MyView"); }. RenderPage("MyView.cshtml")
Palauttaa erityisen näkymän polkujen, tiedostonimien ym. kanssa, ja tulostaa suoraan kuten Heml.RenderPartial() ilman välimuistia. mallimuuttujat voidaan välittää. Renderöi määritellyn näkymän (tunnistettuna polun ja tiedoston nimen perusteella näkymän sijaan) suoraan vastausvirtaan, kuten Html.RenderPartial(). Voit lisätä näkymään minkä tahansa mallin lisäämällä sen toisena parametrina RenderPage("MyView.cshtml",MyModel)
Minä pidän enemmän
@RenderPage("_LayoutHeader.cshtml")Loppu @{Html.RenderPartial("_LayoutHeader"); }Vain siksi, että syntaksi on helpompi ja helpommin luettava. Muuten toiminnallisuudessa ei näytä olevan eroja.
|