|
|
Paskelbta 2015-07-19 23:37:53
|
|
|

1. Atvaizdavimas "Razor" variklyje nėra "puslapio šablono", o puslapis, vadinamas "išdėstymas" (_Layout.cshtml), dedamas į bendrai naudojamo rodinio aplanką. Šiame puslapyje žymoje matysite teiginį: @RenderBody() Tiesą sakant, jis veikia panašiai kaip serverio valdiklis puslapio šablone, kai sukuriamas rodinys, pagrįstas šiuo maketo puslapiu, rodinio turinys suliejamas su maketo puslapiu, o naujai sukurto rodinio turinys pateikiamas tarp etikečių naudojant maketo puslapio @RenderBody() metodą. Šis metodas nereikalauja parametrų ir gali pasirodyti tik vieną kartą. 2. Atvaizduoti puslapį Kaip galite atspėti iš pavadinimo, šis būdas yra pateikti puslapį. Pavyzdžiui, fiksuotą tinklalapio antraštę galima atskirai įdėti į bendrai naudojamo rodinio failą ir tokiu būdu iškviesti maketo puslapyje, kaip nurodyta toliau: @RenderPage("~/Peržiūros/Bendrinama/_Header.cshtml") Su parametrais @RenderPage("~/Peržiūros/Bendrinama/_Header.cshtml",new{parm="mano",parm2="jūs") Paskambinkite į puslapį, kad gautumėte parametrus: Gaukite parametrus, kuriuos perduoda RenderPage(). @PageData["param"] 3. Atvaizduoti skyrių Išdėstymo puslapyje taip pat yra skyriaus sąvoka, tai yra, jei skyrius yra apibrėžtas rodinio šablone, jis gali būti pateiktas atskirai tokiu būdu: @RenderPage("~/Peržiūros/Bendrinama/_Header.cshtml") @RenderBody()
//模板里添加了一个节 @RenderSection ("galva") Žinoma, taip pat apibrėžkite skyrių rodinyje, kitaip įvyks išimtis: @section galva{
//do
} Norėdami išvengti išimčių dėl trūkstamų sekcijų, galite suteikti RenderSection() antrą argumentą: @RenderSection("SubMenu", klaidinga) arba @if (IsSectionDefined("SubMenu"))
{ @RenderSection("SubMenu", klaidinga)
} kitaip
{ <p>Submeniu skyrius neapibrėžtas!</p>
}
4.@Html.Partial Dalinis kiekvieną kartą sukuria savo TextWriter egzempliorių ir talpykloje saugo turinį atmintyje. Galiausiai nusiųskite visą rašytojo išvestį į MvcString objektą Dažniausiai naudojame @{ html.RenderPartial("details"); vietoj @Html.Dalinis Skirtumas tarp RenderPage() ir RenderPartial(). RenderPage() iškvietimai gali jį naudoti tik ankstesniems duomenims perduoti. RenderPartial() gali naudoti viewdata, modelį ir kitus duomenis. Skirtumas tarp Html.RenderPartial ir Html.RenderAction Html.RenderPartial tinka pakartotiniams UserControls ir turi būti naudojamas tik turiniui generuoti naudojant modelius arba UserControls reklamoms. "Html.RenderAction" pirmiausia iškvies valdiklio veiksmo metodą, jei šiam "UserControl" reikia gauti duomenis iš duomenų bazės, kad būtų galima atvaizduoti (perskaityti duomenų bazę per veiksmą), šis metodas yra tinkamesnis šiam laikui. 5.Html.Partial("Mano vaizdas") Grąžinti bandymo srautą kaip MvcHtmlString, vadovaujantis standartinėmis maršruto parinkimo taisyklėmis. Atvaizduoja "MyView" rodinį į MvcHtmlString. Jis laikosi standartinių peržiūros paieškos taisyklių (t.y. patikrinkite dabartinį katalogą, tada patikrinkite bendrinamą katalogą). Html.RenderPartial("Mano rodinys")
Panašiai kaip Html.Partial(), skirtumas tas, kad jis įvedamas tiesiai į puslapį be talpyklos. Atlieka tą patį kaip Html.Partial(), išskyrus tai, kad jis įrašo savo išvestį tiesiai į atsakymo srautą. Tai efektyviau, nes rodinio turinys nėra buferis atmintyje. Tačiau kadangi metodas nepateikia jokios išvesties, @Html.RenderPartial("MyView") neveiks. Vietoj to turite įvynioti skambutį į kodo bloką: @{Html.RenderPartial("MyView"); }. RenderPage("MyView.cshtml")
Pateikia specialų rodinį su keliais, failų vardais ir t. t., ir išveda tiesiogiai, pvz., Heml.RenderPartial() be talpyklos. modelio kintamieji gali būti perduoti. Atvaizduoja nurodytą rodinį (identifikuojamą pagal kelią ir failo vardą, o ne pagal rodinio pavadinimą) tiesiai į atsakymo srautą, pvz., Html.RenderPartial(). Galite pateikti bet kokį norimą modelį į rodinį, įtraukdami jį kaip antrą parametrą RenderPage("MyView.cshtml",Mano modelis)
Man labiau patinka
@RenderPage("_LayoutHeader.cshtml")Virš @{Html.RenderPartial("_LayoutHeader"); }Tik todėl, kad sintaksė yra lengvesnė ir lengviau skaitoma. Išskyrus tai, kad neatrodo, kad būtų jokių skirtumų funkcionalumo prasme.
|
Ankstesnis:ASP.NET---- įdiegti mygtuką arba nuorodą, kad būtų atidarytas prisijungimo dialogasKitą:Nustatykite, kad CheckBoxList eilutė nebūtų apvyniota
|