Luokan sivu. Erilaisten mallien käyttäminen eri selaimille. Alustakohtaiset mallisivut

ASP.NETin ensimmäiset sivut tarjoavat alustavan johdannon vankkaan verkkosovellusten luomisteknologiaan. Monimutkaistamatta ensimmäisiä vaiheita WebForms-, MVC-, WebAPI-kehyksillä, luomme yksinkertaisia ​​verkkosivuja, joissa on upotettu ohjelmakoodi kahdelle näkymänkäsittelijälle - ASPX ja Razor. Koodinkäsittelijät, joita kutsutaan myös renderöimiskoneiksi tai renderöimiskoneiksi, on suunniteltu luomaan dynaamisesti verkkosivu korvaamalla ohjelmakoodi vastaava html-merkintä.

ASPX-moottori on vakiomalli koodin lisäämiseen ASP.NET-verkkosivulle. ASPX käyttää runat="server">-tyyppejä, proseduureja ja muuttujien ilmoituslohkoja sekä sisäänrakennettua html-merkintöjen renderöintilohkoa. ASPX-malli koodin lisäämisestä on siirretty ASP.NET:iin alkuperäiseltä ASP-alustalta muutamin muutoksin.

Razor on uusi mekanismi ohjelmakoodin visualisoimiseksi html-sivulla. Razor on älykäs dynaaminen moottori html:n luominen merkinnät. Sillä on selkeä syntaksi, ja sen avulla on helppo upottaa koodia verkkosivulle. Ohjelmakoodin erottamiseksi html-koodi käyttää @-symbolia yhdessä kanssa aaltosulkeet ja ilman sulkeita.

Ensimmäisten verkkosivujen luomiseen käytämme ilmaista ohjelmistoympäristöä WebMatrix-sivustojen kanssa työskentelyyn. Tällä hetkellä tästä ohjelmointityökalusta on luotu kolmas versio, joka riittää ammattimaisten verkkosivustojen luomiseen. Voit ladata sen verkkosivustolta Microsoft WebMatrix-linkin kautta. WebMatrix-ohjelma sisältää kaiken, mitä tarvitset ASP.NET-pohjaisten verkkosivustojen luomiseen ja testaamiseen: koodieditori taustavalolla ja IntelliSense, IIS Express -verkkopalvelin, tietokannan hallintajärjestelmä SQL-tiedot LocalDB.

Sivusto sisältää kolme sivua: pääsivun ja kaksi identtistä sivua taulukkojen luomiseen dynaamisesti ASPX- ja Razor-koneilla. Taulukon koko voidaan määrittää kyselyrivillä kahdella parametrilla. On sanottava, että periaatteessa molemmat käsittelijät luovat tehokkaasti html-merkintä, mutta tarjoavat erilaisen käyttömukavuuden.

ASPX-moottori edellyttää, että kaikki osat ja ohjelmakoodin osat on suljettu näkymälohkoihin. Tyypit, menettelyt ja muuttujat voidaan ilmoittaa runat="server">... -lohkossa. Attribuutti runat="server" erottaa tämä lohko JavaScript-lohkosta ja tarkoittaa tässä lohkossa olevan koodin käsittelyä suoraan palvelimella.

Listaus nro 1 ASPX-moottoria käyttävä verkkosivu

< !DOCTYPE html > < html xmlns ="http://www.w3.org/1999/xhtml"> < head runat ="server"> < meta http-equiv ="Content-Type" content ="text/html; charset=utf-8"/> < title > < link rel ="stylesheet" type ="text/css" href ="/css/style.css" /> < body > < h1 > < p >< a href ="/">Pääasiaan< p >Kolumnien numerot -< br />Rivien määrä -< table > < tr > < tr > < td >

Alla on Razorin upotetun koodinkäsittelijän verkkosivun koodi. Kiinnitä huomiota html-koodin ja lausekkeiden harmoniseen yhdistämiseen C#:ssa. Razor-moottorin avulla voit käyttää html-tunnisteet suoraan ohjelmakoodin sisällä: Käsittelijän älykäs komponentti erottaa taitavasti html-merkinnän C#-ohjelmakoodista.

Razor-moottorin listaus nro 2 Web-sivu

< !DOCTYPE html > < html lang ="ru"> < head > < meta http-equiv ="Content-Type" content ="text/html; charset=utf-8"/> < meta charset ="utf-8" /> < title >@nimisivu< link rel ="stylesheet" type ="text/css" href ="/css/style.css" /> < body > < h1 >@nimisivu< p >< a href ="/">Etusivu @ Html.Raw(createLinks.GetLinks())< p >Sarakkeiden määrä - @numberColumns< br />Rivien määrä - @numberRows< table > < tr >@for (int i = 0; i< numberColumns; i++) { < th >Otsikko # @(i + 1 ) ) @ for (int row = 0; rivi< numberRows; row++) { < tr >@for(int col = 0; col< numberColumns; col++) { < td >@(rivi+1 ) x@(sara+1 ) ) )

Voit testata sivustoa useilla tavoilla:

  • MS Visual Studio - Tiedosto->Avaa verkkosivusto ->Valitse kansio, johon arkisto purettiin Käynnistä selaimessa (tai F5-näppäin)
  • WebMatrix - Avaa->Kansio->Valitse kansio, johon sivustoarkisto on purettu->Valitse kansio Aloita
  • Pura arkisto paikallisen tai Internet-sivuston fyysiseen kansioon. Käynnistä sivusto selaimessa sen URL-osoitteesta.
  • Lopuksi voidaan lisätä, että sivuston käyttäjälle tieto siitä, millä moottorilla verkkosivut toimivat, ei ole kovin tärkeää. Mutta ohjelmoija valitsee varmasti Razorin työskenneltyään jokaisen sulautetun koodinkäsittelijän kanssa.

    Hei w3ii HTML:ssä

    Tämä koodi näyttää esimerkin HTML-sivuna:




    Hei w3ii!


    firstpage.htm" ja luo myös linkki tiedostoon seuraavasti: firstpage.htm

    Hei w3ii ASP.NETissä

    Helpoin tapa muuntaa HTML-sivu ASP.NET-sivulle kopioitavaksi HTML-tiedosto V uusi tiedosto.aspx-laajennuksella.

    Tämä koodi näyttää esimerkkimme kuten ASP.NET-sivulla:




    Hei w3ii!


    Jos haluat kokeilla tätä itse, tallenna koodi tiedostoon "firstpage.aspx" ja luo myös linkki tiedostoon seuraavasti: firstpage.aspx

    Kuinka se toimii?

    Pohjimmiltaan ASP.NET-sivu on täsmälleen sama kuin HTML-sivu.

    HTML-sivulla on tunniste .htm. Jos selain pyytää HTML-sivua palvelimelta, palvelin lähettää sivun selaimelle ilman muutoksia.

    ASP.NET-sivulla on .aspx-tunniste. Jos selain pyytää ASP.NET-sivua, palvelin käsittelee sivulla olevan suoritettavan koodin ennen kuin se lähettää tuloksen takaisin selaimeen.

    Yllä oleva ASP.NET-sivu ei sisällä suoritettavaa koodia, joten mitään ei suoriteta. Seuraavissa esimerkeissä lisäämme suoritettavan sivun koodin osoittamaan eroa staattisten HTML-sivujen ja dynaamisten sivujen välillä ASP-sivut.

    Klassinen ASP

    Active Server Pages (ASP) on ollut olemassa useita vuosia. ASP:n avulla suoritettava koodi voidaan sijoittaa HTML-sivuille.

    ASP:n aikaisempia versioita (ennen ASP.NETiä) kutsutaan usein klassisiksi ASP:iksi.

    ASP.NET ei ole täysin yhteensopiva Classic ASP:n kanssa, mutta useimmat Classic ASP -sivut toimivat hyvin ASP.NET-sivuina vain pienin muutoksin.

    Jos haluat oppia lisää klassisesta ASP:stä, käy ASP-opetusohjelmassamme.

    Dynaamiset sivut klassisessa ASP:ssä

    Havainnollistaaksemme, kuinka ASP voi hahmontaa sivuja, joissa on dynaamista sisältöä, lisäsimme suoritettavaa koodia (punaisella) edelliseen esimerkkiin:




    Hei w3ii!




    Tunnisteen sisällä oleva koodi suoritetaan palvelimella.

    Response.Write on ASP-koodi, jolla kirjoitetaan jotain HTML-lähtövirtaan.

    Now() on palvelimen palautusfunktio nykyinen päivämäärä ja aikaa.

    Jos haluat kokeilla tätä itse, tallenna koodi tiedostoon nimeltä "dynpage.asp" ja luo myös linkki tiedostoon seuraavasti: dynpage.asp

    Dynaamiset sivut ASP .NET:ssä

    Tämä koodi näyttää esimerkkimme kuten ASP.NET-sivulla:




    Hei w3ii!




    Jos haluat kokeilla tätä itse, tallenna koodi tiedostoon nimeltä "dynpage.aspx" ja luo myös linkki tiedostoon seuraavasti: dynpage.aspx

    ASP.NET vs. klassinen ASP

    Edelliset esimerkit eivät osoita eroja ASP.NETin ja klassisen ASP:n välillä.

    Kuten kahdesta viimeisestä esimerkistä näet, näiden kahden ASP- ja ASP.NET-sivun välillä ei ole eroja.

    Seuraavissa luvuissa näet, kuinka ASP.NET-palvelinohjauksista tehdään klassista ASP:tä tehokkaampia.

    Kuten tiedät, useimmilla sivustoilla on samantyyppinen yleisesti hyväksytty sivuasettelu, jonka olennainen osa on ylä- ja alatunniste s ja ehkä tärkein osa on sivun runko, vaikka poikkeuksiakin tietysti löytyy. ASP .NET 2.x tarjoaa ainutlaatuisen menetelmän luoda samat merkinnät sivuston sivuille - tämä on niin kutsuttujen pääsivujen käyttö. Jos olet työskennellyt aikaisemmat versiot ASP (ASP, ASP .NET 1.x), niin luultavasti muistat, että jouduit jatkuvasti kopioimaan sivun HTML-koodia ASP-elementeillä. Tietenkin sisällyttää tiedostot klassiseen ASP:hen ja käyttäjäohjaimet (*.ascx) ASP .NET 1.x:ssä yksinkertaistivat huomattavasti Web-sivustojen kehitystä, mutta se ei ole verrattavissa ASP .NET 2:n tarjoamiin ominaisuuksiin.

    Keitä nämä mestarisivut ovat?

    Joten mikä on pääsivu? Sivupohja on tiedosto, jonka tunniste on *.master, se ei käytännössä eroa jo tutuista aspx-sivutiedostoista. Sivupohja on sisällön säilö, ja se voi sisältää sivun HTML-merkintöjä, html-elementtejä, palvelimen ohjaimia ja käyttäjän ohjaimia. Toisin sanoen sivupohja sisältää sivun asettelun, saman ylä- ja alatunnisteen, navigointivalikon, periaatteessa kaiken, mitä sivuston kaikilla sivuilla todella näkyy, ja sivupohja sisältää myös yhden tai useamman kentän sisällön korvaamista varten (katso Kuvio 1 ). Itse sisältö sijaitsee aspx-sivuilla, jotka puolestaan ​​linkittävät sivupohjalle. Tällä tavalla kehittäjän ei enää tarvitse kopioida sivumerkintöjä, koska ne ovat yhdessä tiedostossa.

    Riisi. 1. Pääsivu.

    Työskentely Master Pagesin kanssa

    Kuten sanoin, sivupohja on hyvin samanlainen kuin aspx-sivut, mutta siinä on useita eroja. Joten @Page-direktiivin sijaan sivupohjalla on @Master-käsky. @Master-direktiivissä on samat parametrit kuin @Pagessa. Useimmiten käytetään seuraavia parametreja: Kieli – määrittää kielen, jolla koodi kirjoitetaan; Debug – osoittaa virheenkorjaustilan tilan; Peri – sisältää yksittäisen koodiluokan nimen; ClassName – määrittää sivua käsiteltäessä luodun luokan nimen; EnabledTheming – määrittää teemojen käytön tilan; Src – määrittää nimen lähdetiedosto erillisellä koodiluokalla.
    Tässä kannattaa huomioida se määritetyt parametrit@Master-direktiivissä alisivut (sisältösivut) eivät peri niitä, vaan niitä käytetään vain pääsivulla. Esimerkiksi sivupohjan kieliargumentti voi olla C#, kun taas sisältösivuilla se voi olla VB.
    Pääsivut voivat myös käyttää samoja ohjeita kuin aspx-sivut, kuten @Register, @Import jne.
    Jokaisella sivupohjalla (yhdessä projektissa niitä voi olla useita, riippuen sivuston rakenteesta ja tarpeista, esim. yksi sivupohja foorumille, toinen muulle sivustolle) on oltava vähintään yksi ContentPlaceHolder-elementti, joka on itse asiassa säiliö sisällölle. ContentPlaceHolder-elementti on yleensä tyhjä, mutta se voi sisältää myös sisältöä, joka näytetään oletuksena, jos aspx-sivuilla ei ole sisältöä. Itse sisältö löytyy aspx-sivujen Sisältö-elementistä. Sisällönhallinta on sisältösivun pääelementti ja toimii vain yhdessä ContentPlaceHolder-elementin kanssa.
    Viittaus sisältösivujen pääsivuun voi olla @Page-ohjeessa MasterPageFile-parametrissa, joka määrittää polun sivupohjatiedostoon, esimerkiksi:

    Ja myös linkki sivupohjalle voi sijaita web.config-tiedostossa, jolloin sivupohja koskee kaikkia aspx-sivuja, jotka sijaitsevat samassa kansiossa web.config:n kanssa (tai koko sovellukseen, jos web.config on juurihakemistosovelluksissa), esimerkiksi:

    Lisäksi viitesivu voidaan määrittää ohjelman suorituksen aikana muuttamalla MsterPageFile-ominaisuutta Page_PreInit-tapahtuman käsittelyssä. Esimerkiksi:

    Suojattu alisivu_aloitus(ByVal lähettäjä Objektina, ByVal e System.EventArgs) Käsittelee Me.Init Me.MasterPageFile= "~/NewMasterPage.master" End Sub

    Huomaa, että tämä koodi aiheuttaa virheen, jos MasterPageFile-argumentti on määritetty @Page-direktiivissä aspx-sivulla.
    On myös huomattava, että sivupohjat itse voivat linkittää muille sivupohjasivuille määrittämällä polun sivupohjalle @Master-direktiivin MasterPageFile-argumentissa.

    Teoriasta käytäntöön

    Ja niin, ehkä teoria riittää, siirrytään eteenpäin käytännön käyttöä mestarisivut. Tehdään ensin yksinkertainen sivupohja, jota kutsutaan nimellä MasterPage.master:

    Yksinkertainen esimerkki sivupohjasivujen kanssa työskentelystä Tämä mallipohja tulee olemaan kaikilla sisältösivuilla Tekijänoikeus (c) Vain tekijänoikeus

    Huomaa ContentPlaceHolder-elementti. Tämän elementin läsnäolo sivupohjassa on pakollista, kuten jo sanoin, se toimii sisällön säilytyselementtinä.
    Luodaan nyt useita aspx-sivuja, joissa on linkki sivupohjallemme. Ensimmäisen sivun nimi on vakiintuneiden perinteiden ja standardien mukaisesti Default.aspx

    Hei, tämä on sisältö kotisivu!
    Siirry toiselle sivulle

    Huomaa @Page-direktiivin MasterPageFile-argumentti, joka osoittaa sivupohjatiedostoon, tässä tapauksessa MasterPage.master-tiedostoon, joka sijaitsee sovelluksen juurihakemistossa.
    Kuten näet, sisältösivulla ei ole tunnisteita , , ja , koska nämä tunnisteet ovat jo olemassa pääsivullamme. Kiinnitä huomiota Content-elementtiin, erityisesti sen ContentPlaceHolderID-parametriin - tämä osoittaa sisältösäilön nimen sivupohjassa, ts. sen ContentPlaceHolder-elementin nimi, johon sisältö lisätään. Sisältö-elementti itsessään sisältää sisällön tekstin tekstin lisäksi, se voi sisältää mitä tahansa kelvollisia aspx-sivujen elementtejä.
    Luo nyt toinen aspx-sivu, kutsu sitä Toiseksi:

    Ja tässä meillä on sivun toisen sivun sisältö!
    Mene kotisivulle

    Suorita nyt projekti ja ASP .NET yhdistää sivupohjan sisältösivuun.

    Käytä sivupohjan ominaisuuksia

    Pääsy kohteeseen objektimalli sivupohja on mahdollista Master-ominaisuuden kautta, mutta jos yrität päästä sivupohjalle suoraan, tapahtuu virhe. Tämä johtuu siitä, että sivupohja on viittaus sivupohjaobjektiin ja tarjoaa pääsyn vain sivupohjaan julkisia kiinteistöjä ja menetelmät.
    Aseta esimerkiksi Label-elementti sivupohjalle ja kutsu sitä nimellä lblTitle. Jotta voit muuttaa tämän elementin tekstiä, sinun on luotava asianmukaiset ominaisuudet sivupohjaluokassa:

    Julkinen ominaisuus MyTitle() As String Hanki OmaTitle = lblTitle.Text End Get Set(ByVal arvo As String) lblTitle.Text = arvo End Set End Property

    Nyt voit dynaamisesti muuttaa tai saada tekstiä sivupohjan lblTitle-elementissä, esimerkiksi käsitellessäsi aspx-sivun lataustapahtumaa:

    Suojattu Sub Page_Load(ByVal lähettäjä Objektina, ByVal e System.EventArgs) Käsittelee Me.Load CType(Master, MasterPage).MyTitle = "Hei!" End Sub!}

    Siinä kaikki, jos sinulla on kysyttävää, kirjoita, yritän vastata.

    Suunnittelumallit ovat visuaalista perintöä sivuista, jotka ilmestyivät ensimmäisen kerran ASP.NET 2.0:ssa. Voit luoda perustan mille tahansa hakemussivulle. Mallit helpottavat sovellusten luomista ja ylläpitoa. Visual Studio 2005 sisältää tuen sivumallien luomiseen ja muokkaamiseen. Tällä luennolla tarkastellaan sivupohjien käyttöä sovelluksessa ja aloitetaan niiden eduista.

    Huomautus: Tämän alueen terminologiaa ei ole ratkaistu. Jotkut kirjat käyttävät ilmaisua "pääsivut". Termiä "pääsivu" voidaan käyttää, vaikka se voidaan sekoittaa Default.aspx:hen.

    Miksi tarvitset sivusuunnittelumalleja?

    Keskivertokäyttäjälle sivuston ja toisen välinen ero on sivun monimuotoisuus. Useimmilla verkkosivuilla on nykyään tunnistettava muotoilu, joka saavutetaan käyttämällä samoja elementtejä samoissa paikoissa sivuston eri sivuilla. Siksi sivun suunnittelu on tuskin vähemmän tärkeä kuin yleinen toimivuus.

    Katso esimerkiksi sanomalehden verkkosivuston pääsivua " TVNZ" Joka päivä siellä ilmestyy erilaisia ​​artikkeleita, mutta niiden muotoilu pysyy samana. Tämä on sanomalehden logo, ylhäältä, oikealta, vasemmalta navigointipalkit, artikkelien luokitus oikealla, lomakkeet postin hakua, tilaamista ja kirjautumista varten. Sivun alareunassa on lakitietoja.

    Jotkut kehittäjät kopioivat ja liittävät päällekkäisiä elementtejä kaikille sivuille. Tämä on tehotonta, jos joudut muuttamaan yhtä yksityiskohtaa näissä yleisissä elementeissä, muutokset on tehtävä kaikille sivuille. Voit laittaa toistuvia koodinpätkiä sisällyttämistiedostoihin käyttämällä HTML-komennot sisältää. Mutta on niin vaikea nähdä sivun lopullista ulkoasua kehitysympäristössä. ASP.NET 1.1 mahdollisti mukautettujen ohjausobjektien luomisen. Voit luoda tällaisen elementin halutulla sisällöllä ja sijoittaa sen kaikille sivuille. Tämän idean kehittäminen oli sivupohjien luominen. Se on myös mukautettu elementti ohjaus, vain se ei ole sivulla, vaan sen ulkopuolella.

    Mestarisivujen perusteet

    Sivumalleilla voit määrittää yleistä sisältöä ja sijoittaa sen sivulle, jossa on .master-tunniste. Tällaisia ​​sivuja sovelluksessa voi luonnollisesti olla useita. Tätä mallia voi käyttää mikä tahansa määrä alasivuja, joilla, kuten tavallisilla sivuilla, on aspx-tunniste.

    Tästä luennosta alkaen analysoimme Visual Studio 2005:n Personal Web Site Starter Kit -mallin avulla luomaa projektia. Se näyttää sivupohjia, teemoja sekä personoinnin ja navigoinnin. Navigointisäätimet ovat Default.master-mallisivun keskellä. Ja tämä luonnollinen ratkaisu, koska navigointia tarvitaan kaikkialla.

    Mallisivu sisältää myös yleiset otsikot ja alatunnisteet.

    Tämä on ainoa sivutyyppi, jolle on mahdollista sijoittaa erikoiselementtejä ContentPlaceHolder-ohjaimet. Ne määrittelevät paikat, joihin tietyn ohjatun toiminnon alisivut voivat sijoittaa oman sisällönsä. Kun ASP.NET vastaanottaa pyynnön alisivun hahmontamisesta, se yhdistää sen koodin pääsivun koodiin, jolloin tuloksena on HTML, jossa ei ole näkyviä saumoja.

    Kun alisivua muokataan kehitysympäristössä, Suunnittelu-välilehti tulee näkyviin täysi sivu yhdessä mallin elementtien kanssa, mutta ne näytetään harmaa. Niitä ei voi muokata. Voit muokata Sisältöelementtien sisältöä.

    Valitse Lisää uusi kohde -valintaikkunassa sivupohjatyyppi. Kuten tavalliset sivut, ne voidaan luoda koodilla takana tai upotetulla koodilla sivulle. Tämä ei vaikuta lapsi+-sivujen koodinjakomalliin millään tavalla. Lisäksi pää- ja alasivut voidaan kehittää eri kielillä.

    Jotta sivu jaetaan selkeästi loogisiin osiin, käytetään taulukoita. Rakennetaan 3 rivin taulukko, missä sisään kärkilinja siellä on kaikkien sivujen otsikko, toinen sisältää mielivaltaista sisältöä, se koostuu kahdesta solusta, joissa kummassakin on yksi ContentPlaceHolder. Alimmalla rivillä on juridiset tiedot. Taulukko luodaan hyvin yksinkertaisesti Layout-Insert Table -valikosta. Luo 2 x 3 -taulukko Yhdistä sen jälkeen ylä- ja alarivien solut ja lisää ContentPlaceHolder keskimmäiseen. Luo ylä- ja alatunnisteen sisältöä. Sinun pitäisi päätyä tällaiselle sivulle:

    Hei!
    ASP.NET 2.0 -ohjelmointikoulu
    Tekijänoikeus © 2006 - ASP.NET 2.0 School

    Ensimmäinen ero tämän sivun ja tavallisen sivun välillä on, että se alkaa pääkäskyllä, ei sivulla. Sivupohjaluokka määritellään MasterPage.master.cs-tiedostossa.

    julkinen osittainen luokka MasterPage: System.Web.UI.MasterPage ( suojattu void Page_Load(objektin lähettäjä, EventArgs e) ( ) )

    Malliluokka on System.Web.UI.MasterPagen jälkeläinen, joka puolestaan ​​perii System.Web.UI.UserControlin.

    Se voi sisältää mitä tahansa säätimiä ja HTML-koodia. Sivutapahtumia voidaan myös käsitellä siinä. 2 ContentPlaceHolder-elementit osoittavat paikat, joihin seuraavan sivun sisältö lisätään.

    Nyt sinun on luotava sisältösivu. Se luodaan tavalliseen tapaan, vain valintaruutu Select Master Page on valittuna. Näyttöön tulee valintaikkuna, jossa sinun on valittava sivumalli.

    Mutta myös tässä tapauksessa sivudirektiivin pääsivun määrittäminen on etusijalla sovellustason osoittamiseen nähden. Web.config-asetus tulee voimaan sivuilla, joilla ei ole määritetty masterPageFile-tiedostoa, mutta joilla on määritetty Sisällön ohjausobjektit. Tämä asetus ei vaikuta tavallisiin aspx-sivuihin.

    Mallia ei voi määrittää kaikille sivuille, vaan valikoivasti, esim tietty kansio sovellukset.

    Sijaintielementti lisätään pääkonfigurointisolmuun. Tämä määrittää, että kaikki Lectures-kansion sivut käyttävät Lectures.master-mallisivua.

    Mallin seuraajasivu voi sisältää vain sisältötyypin elementtejä, joista jokainen vastaa mallin yhtä ContentPlaceHolder-elementtiä. Et voi lisätä sisältöä näiden elementtien ulkopuolelle, muuten ASP.NET ei voi yhdistää sivupohjaa sisältösivuun. ContentPlaceHolder-tunnuksen on vastattava vastaavan sisältöelementin ContentPlaceHolderID-attribuuttia.

    Ohjelma loi alisivun, jossa on 2 sisällönhallintaa. Jos vaihdat Suunnittelu-välilehteen, nämä kaksi sisältöelementtiä näytetään tyhjinä suorakulmioina vierekkäin, koska ne ovat mallin kahdessa vierekkäisessä taulukon solussa. Page-direktiivi eroaa tavallisesta MasterPageFile-attribuutin lisäksi läsnäololla Otsikko-attribuutti. Koska , , -tunnisteet peritään mallitiedostosta, tämä on ainoa tapa ohittaa selaimen otsikko. Korvaa määritteen arvo

    Jos katsot tuloksena olevaa sivua selaimessa, näet, että selaimen otsikko on heijastanut muutosta. Sivun HTML-koodi sisältää

    Sivu itsessään näyttää vain mallisivulla määritetyn sisällön.

    Mallia voidaan muokata milloin tahansa, ja muutokset näkyvät kaikilla johdetuilla sivuilla. Lisätään esimerkiksi kuva ennen otsikkotekstiä.

    (Se löytyy .NET-asennuksesta "Microsoft.NET\Framework\v2.0.xxx\ASP.NETWebAdminFiles\Images)

    Lapsisivu selaimessa näyttää nyt tältä:

    On toinenkin tapa muuttaa selaimen otsikkoa ohjelmallisesti. Sivulla, jolla on malli, on Master-ominaisuus. Tietysti kaikilla sivuilla on se, mutta tavalliset sivut se on yhtä suuri kuin Null. Sen kautta pääset kaikkiin pääsivun ominaisuuksiin. Tämä ominaisuus on vain luku -tilassa.

    Pääsivulla voidaan määrittää oletusarvoisesti näytettävä sisältö. Se sijoitetaan ContentPlaceHolder-elementteihin, ja kaikki alasivut perivät sen. Ellei alisivu ohita oletussisältöä, sitä käytetään, kun se näytetään. Luodaan SiteMapPath-ohjausobjekti, jonka sijoitamme ContentPlaceHolder1:een.

    Se ei näy MainSchool.aspx-sivulla, koska molemmat sisältöelementit on määritelty siellä. Jos kuitenkin sisään seuraava sivu Vain yksi sisältöelementeistä on määritelty:

    Mistä ohjelmointikielestä pidät enemmän?
    asp:RadioButtonList ID="rblVoting" runat="server" DataSourceID="SqlDataSource1" DataTextField="variant" DataValueField="id">


    Jos katsot sitä selaimessa, huomaat, että sen vasemmalla puolella näkyvät leipämurut.

    Pääsivun ohjelmiston tarkoitus

    Sisältösivulla voit määrittää sen pääsivun uudelleen ohjelmallisesti. Tätä varten sinun on määritettävä haluttu arvo ominaisuus Page.MasterPageFile. Malli muuttuu riippumatta siitä, mikä malli on määritetty @Page-direktiivissä. Mutta jos yrität tehdä tämän Page_Load- tai Page_Init-funktioissa, saat ajonaikaisen virheen.

    Tätä ominaisuutta voidaan muuttaa vain Page_PreInit-tapahtuman aikana. Page_PreInit-tapahtuma on sivun elinkaaren aikaisin vaihe, jota voidaan käyttää. Init-tapahtuman aikana pää- ja alasivut ovat jo sulautuneet yhdeksi, joten on liian myöhäistä muuttaa mallia. Tästä syystä Page_PreInit-tapahtuma on ainoa, jonka käsittelijä voi työskennellä pääsivun kanssa erillään sisältösivusta.

    Mallisivuilla voi olla menetelmiä ja ominaisuuksia. Jotta voit käyttää niitä, sinun on käytettävä @MasterType-direktiiviä. Tämä tekee suunnittelumallisivuluokan saataville voimakkaasti kirjoitetun linkin kautta. Attribuutti TypeName määrittää tyypin nimen, ja VirtualPath on suhteellinen polku juurihakemisto web-sovellus mallitiedostoon.

    Tällä tavalla sivu mahdollistaa ulkoisen pääsyn elementtien ominaisuuksiin.

    void Page_Load() ( Master.FooterText = "Tämä on mukautettu alatunniste"; AdRotator ad = (AdRotator)Master.FindControl("MyAdRotator"); if (ad != null) ( ad.BorderColor = System.Drawing.Color. Purppura; ad.BorderWidth = 10;
    Sisäkkäiset sivupohjat

    Suunnittelumallit voivat periä muita malleja. Esimerkiksi verkkosivusto koostuu useista osioista. Kaikilla sivuston sivuilla on yhteisiä elementtejä, ja kaikilla osiosivuilla on muita yhteisiä elementtejä. Verkkosivusto kukkakauppa koostuu monivuotisten ja yksivuotisten kukkien osista. Niille on luotu malleja, jotka perivät yleisen sivustomallin.

    Perrenaalit

    Narsisseja kuvaava sivu on monivuotisten kukkien osiossa ja perii SectionPerrenials-mallin.

    Narsissit kukkivat aikaisin keväällä ja toivottavat kasvukauden tervetulleeksi.
    Tapahtumien sarja

    Kun yhdistelmäsivu hahmonnetaan palvelimella, sekä mallisivu- että sisältösivutapahtumat tapahtuvat. Näiden tapahtumien järjestys on hyödyllinen tietää, jos haluamme ohjelmoida niiden käsittelijät.

    Sisäkkäisten sivupohjasäätimien alustus.

    Sisäkkäisten sisältösivujen ohjaimien alustus.

    Itse pääsivun alustaminen.

    Sisältösivun alustaminen.

    Page_LoadComplete sisältösivun tapahtuma

    LoadComplete-tapahtuma otettiin käyttöön, jotta sen Page_Loadissa luotuihin pääsivuelementteihin pääsisi käsiksi sisältösivulta. Tätä ei voi tehdä sisältösivun Page_Load -käsittelijässä, koska se ladataan ennen pääsivua.

    Alustakohtaiset mallisivut

    Monissa tapauksissa sovelluksia kehitetään katseltavaksi eri tyyppejä säiliöt. Se voi olla erilaisia ​​selaimia tai verkkosivuston katsojat taskutietokoneet ja matkapuhelimia.

    Siksi ASP.NET 2.0:ssa voit määrittää Page-direktiivin MasterPageFile-attribuutissa eri sivuja malli tietyille säilöille.

    Johtopäätös

    Kun luot sovelluksia, joissa kaikilla sivuilla on yhteiset ylä-, alatunnisteet ja navigointi, elämää voidaan helpottaa suunnittelukuvioilla. Ne ovat helppokäyttöisiä ja niitä voidaan muuttaa milloin tahansa, jolloin koko sovellus päivitetään.

    ASP.NET Nettisivu s tarjoaa käyttöliittymän verkkosovelluksillesi. Tämän osan aiheet sisältävät tietoa ASP.NET-Web-sivujen toiminnasta ja niiden luomisesta ja ohjelmoinnista.

    Tässä osiossa

      ASP.NET-verkkosivujen yleiskatsaus
      Tarjoaa yleistä tietoa ASP.NET-verkkosivujen rakenteesta, siitä, miten ASP.NET käsittelee sivuja ja kuinka ASP.NET-sivut tekevät XHTML-standardien mukaiset merkinnät.

      ASP.NET-verkkosivun syntaksin yleiskatsaus
      Kuvaa perusmerkintäelementit, jotka muodostavat ASP.NET-sivun.

      ASP.NET-verkkosivujen ohjelmointi
      Sisältää tietoja tapahtumakäsittelijöiden luomisesta ASP.NET-sivuille ja työskentelyyn asiakaskomentosarjan kanssa.

      ASP.NET-verkkosivun koodimalli
      Tarjoaa yleiskatsauksen kaikille ASP.NET-sivuille ominaisesta ohjelmointimallista, joka sisältää yksisivuisen mallin, koodin takana olevan mallin ja kuinka valita käytettävä malli.

      ASP.NET-sivuluokan yleiskatsaus
      Kuvaa ajonaikaluokan, joka luodaan ja sitten käännetään edustamaan sivua, ja tarjoaa ohjelmoitavan objektin, joka vastaa sivua.

      Esittely: Perusverkkosivun luominen Visual Web Developerissa
      Tarjoaa opetusohjelman yksinkertaisen ASP.NET-verkkosivun luomiseen.

      Esittely: Perusverkkosivun luominen koodin erottelulla Visual Web Developerissa
      Tarjoaa opetusohjelman yksinkertaisen ASP.NET-verkkosivun luomiseen käyttämällä koodin takana olevaa ohjelmointimallia.

      Kuinka lisätä ASP.NET-verkkosivuja Web-sivustoon
      Tarjoaa menettelyn uusien ja olemassa olevien ASP.NET-Web-sivujen lisäämiseksi Visual Studion Web-sivustoon.

    Aiheeseen liittyvät osiot

      ASP.NET-verkkosivustojen luominen
      Sisältää tietoja ASP.NET-verkkosovelluksen (kutsutaan joskus Web-sivustoksi) luomisesta, mukauttamisesta ja hallinnasta.

      ASP.NET Web Server Controls Yleiskatsaus
      Tarjoaa tietoa siitä, miten ASP.NET-verkkopalvelimen ohjaustoiminnot toimivat, kuinka niitä lisätään ASP.NET-sivuille ja miten ne ohjelmoidaan.