Et kig på ASP.NETs Page klasse

Tags:    asp.net
Skrevet af Bruger #4522 @ 11.03.2009

Page -klassen


Page -klassen repræsenterer en .aspx side. Den findes i System.Web.UI , og nedarver fra TemplateControl og implementerer IHttpHandler.

TemplateControl klassen er en abstrakt klasse der har en del grundlæggende funktionalitet som er til rådighed for Page og UserControl - som er de eneste to der nedarver fra den. Med funktionaliteten fra TemplateControl kan der på .aspx -sider og brugerkontroller bruges deklarativ data-binding udtryk.

Når vi arbejder med hvad der kan blive et ganske komplekst kontroltræ er det vigtigt at alle kontrollerne har et unikt navn. I .NET sikres det ved at bruge det der hedder en navnebeholder - eller på engelsk 'naming container'. En sådan navnebeholder sørger for at alle navne den "holder" er unikke; rent praktisk foregår det ved at der oprettes et virtuelt namespace for alle kontrollerne i navnebeholderen. Dette gøres ved at en klasse i kontrolhierarkiet implementerer INamingContainer. En kontrols navnebeholder er så den navnebeholder der først implementeres af en forældreklasse. TemplateControl implementerer netop INamingContainer og skaber derved et virtuelt namespace for Page og alle dens kontroller. (Faktisk er INamingContainer kun et såkaldt markerings interface, hvilket betyder at der ikke er nogle metoder den implementerende klasse skal implementere. Interfacet markerer blot at der skabes et unikt rum for kontrolnavne - hvilket ASP.NET sørger for.)

Vi har tidligere snakket om IHttpHandler. At Page implementerer dette interface betyder at den kan håndtere et bestemt type HTTP anmodninger - nemlig dem på en .aspx fil. Metoden ProcessRequest , fra interfacet, kaldes af ASP.NET og starter den proces der ender med markup der sendes til brugerens browser.

Properties - Page klassens egenskaber
Lad os kigge på alle klassens egenskaber, dvs. properties. Og der er mange!

  • Application: Returnerer den nuværende web-forespørgsels HttpApplicationState objekt. Dette objekt indeholder en del global "state" dvs. tilstandsinformation, om HTTP applikationen.

  • Cache: Returnerer applikationens cache. Kan bruges til at holde global data som skal caches. Objektet er af typen Cache.

  • ClientID: Returnerer kontrollens unikke ASP.NET genereret ID. For en side returneres altid den tomme streng.

  • ClientQueryString: Returnerer den del af URLen der udgør forespørgselsstrengen.

  • ClientScript: Returnerer et ClientScriptManager -objekt som bruges til at håndtere klient-scripts.

  • ClientTarget: Er som udgangspunkt sat til den tomme streng. Du kan bruge den til at specificere den type browser som HTMLen skal understøtte.

  • Controls: En samling af alle kontrollerne indeholdt på siden.

  • EnableViewState: Indikerer hvorvidt siden skal understøtte view state.

  • EnableViewStateMac: Indikerer om ASP.NET skal udregne en autorisationskode specifik for maskinen og tilføje koden til sidens view state. Brug denne feature når data integritet er af yderste vigtighed. Denne feature skal ikke sættes i kode, men i @Page -direktivet (mere om dette nedenfor).

  • EnableTheming: Returnerer sand såfremt siden understøtter UI temaer.

  • ErrorPage: Bruges til at få eller sætte, den fejlside der skal omdirigeres til såfremt der opstår en exception der ikke håndteres.

  • Form: Returnerer et objekt af typen HtmlForm som repræsenterer <form>-elementet på siden. Dette element er roden for alle sidens kontroller/elementer.

  • Header: Returnerer en reference til det objekt der repræsenterer sidens hoved, dvs. <head>-elementet. Hvis <head>-elementet ikke har en runat="server" attribut returneres null.

  • ID: Returnerer den tomme streng.

  • IsAsync: Returnerer true såfremt post-backen er sket i respons til en asynkron forespørgsel (som fx. AJAX).

  • IsCallback: Returnerer sand hvis der er tale om en "callback". Callback er en speciel form for postback der kommer fra JavaScript kode. I modsætning til postback bliver hele siden ikke gentegnet og viewstaten opdateres ej heller.

  • IsCrossPagePostBack: Indikerer hvorvidt siden indlæses som respons til en postback fra en anden side.

  • IsPostBack: Falsk hvis det er første gang siden indlæses og sand hvis der er tale om en postback fra samme side.

  • IsValid: Indikerer om valideringen af siden var succesfuld.

  • MaintainScrollPositionOnPostBack: Hvis sand sættes rulleskakten i brugerens browser i den tilstand den var i før postbacken.

  • Master: Returnerer en instans af MasterPage -klassen som repræsenterer den "master page" der bestemmer den nuværende sides udseende (såfremt der bruges master page).

  • MasterPageFile: Sætter og returnerer filnavnet på den nuværende sides master page.

  • NamingContainer: Returnerer en reference til kontrollens (dvs. sidens) "navnebeholder". Denne proeprty er arvet fra Control -klassen. Da Page -klassen er roden i hele ASP.NET hierakiet returnerer siden null her.

  • Page: Arvet fra Control -klassen og returnerer den side der indeholder pågældende serverkontrol. For en sides vedkommende returnerer den derfor bare sig selv (this ).

  • PageAdapter: Returnerer sidens "adapter"-objekt. Forskellige adaptere bruges afhængig af den specifikke browser der foretog sideanmodningen.

  • Parent: Nedarvet fra Control. Returnerer en reference til kontrollens forældre-kontrol på siden. Da siden er øverst i hierarkiet returnerer siden her null .

  • PreviousPage: Returnerer en reference til den kaldende side når der er tale om cross-page postback.

  • Request: Returnerer HttpRequest objektet for den nuværende HTTP forespørgsel.

  • Response: Returnerer HttpResponse objektet for det nuværende HTTP svar.

  • Server: Returnerer et HttpServerUtility objekt der repræsentere serveren.

  • Session: Returnerer et HttpSessionState objekt der bruges til at holde bruger-specifik information.

  • SmartNavigation: SmartNavigation er en egenskab der udnytter noget af browserens funktionalitet til at forbedre brugerens oplevelse med siden. Denne property indikerer om Smart Navigation er slået til. Blev i ASP.NET 2.0 markeret som "deprecated", hvilket betyder at udviklere ikke længere skal bruge denne property.

  • StyleSheetTheme: Bruges til at få eller sætte navnet på sidens CSS tema.

  • TemplateSourceDirectory: Returnerer sidens virtuelle folder.

  • Theme: Denne property bruges til at få eller sætte sidens tema.

  • Title: Getter/setter for sidens titel.

  • Trace: En instans af klassen TraceContext. Bruges til at udføre tracing på siden.

  • UniqueFilePathSuffix: Returnerer et sufix der tilføjes filstien såfremt en browser kræver dette for caching.

  • UniqueID: For et Page -objekt returneres den tomme streng.

  • User: En IPrincipal instans der repræsenterer den nuværende brugers sikkerhedskontekst som giver adgang til brugerens identitet og dennes tilhørende roler.

  • Validators: Returnerer en samling af alle sidens valideringskontroller.

  • ViewStateEncryptionMode: Indikerer hvordan view staten skal krypteres.

  • ViewStateIgnoresCase: Indikerer om view state er sensitiv overfor store og små bogstaver.

  • ViewStateUserKey: En tekststreng der bruges til at hashe view-state indholdet. Kan f.eks. være den nuværende bruges navn eller ID. Er et godt værn mod visse web-angreb. Dog ikke særlig velegnet hvis applikationen tillader anonym adgang.

  • Visible: Indikerer om ASP.NET skal tegne siden. Hvis den er sat til falsk vil klienten kun se tekst skrevet med Response.Write.


Udover ovennævnte properties, kan man på MSDN under Page -siden finde flere. Disse er dog en del af ASP.NETs infrastruktur og skal ikke bruges i din kode.

Metoderne
Nu skal vi se på Page -objekternes metoder. Der er metoder der har at gøre med genereringen af sidens markup, og metoder der har at gøre med klient-scripting. Derudover er der den del metoder der assisterer med konstruktion af siden. Der er også en del metoder der er nedarvet fra Control , og som du ikke typisk vil bruge så meget i forbindelse med Page -objektet - de er dog også medtaget i nedenstående opremsning for komplethedens skyld. Der findes også en håndfuld såkaldte "infrastrukturmetoder" som bruges internt af hele ASP.NET maskineriet, de er ikke medtaget i denne liste da du aldrig vil få brug for dem. Der er rigtig mange metoder, og en del af dem er enten vigtige at kende til, eller nogle du vil bruge tiere end andre; jeg har valgt at fremhæve disse metoder med fed skrift. Lad os kigge på det.

  • AddedControl: Denne metoder er arvet fra Control -klassen og er ikke en du selv kalder. Den bliver kaldt umiddelbart efter at der er blevet tilføjet en kontrol til sidens Controls -samling.

  • AddOnPreRenderCompleteAsync: Denne metode bruges til at tilføje en start og slut event handler delegate til en asynkron side. Denne metoder bruger du hvis du ønsker at bygge en asynkron side (hvis du ikke kender til asynkrone ASP.NET sider så bruges de til at opnå en bedre ydeevne i tilfælde af at der er mange brugere og siden indeholder I/O-begrænsede operationer).

  • AddParsedSubObject: Denne metode er også arvet fra Control -klassen. Dette er ikke en metode du selv vil kalde, men en der kan overskrives i en "custom control". Metoden gør kontrollen, i dette tilfælde vores sideobjekt, opmærksom på at et XML eller HTML element er blevet parset og vil blive tilføjet til sidens ControlCollection. I denne artikels kontekst - at lære mere om Page -objektet - er denne metode ikke synderlig interessant.

  • ApplyStyleSheetSkin: Denne metoder er også arvet fra Control. Det er typisk ikke en du vil bruge i forbindelse med Page -objektet. ApplyStyleSheetSkin kalder du for at bruge style sheet skins på en kontrol som du har oprettet programmatisk.

  • ClearChildControlState: Nedarvet fra Control -klassen. Denne metode sletter all kontrol-state information for sidens kontroller.

  • ClearChildState: Nedarvet fra Control -klassen. Denne metode sletter al kontrol-state og view state information for sidens kontroller.

  • ClearChildViewState: Nedarvet fra Control -klassen. Denne metode sletter al view-state information fra sidens kontroller.

  • Construct: Nedarvet fra TemplateControl -klassen. Denne metode bruges til at udføre noget logik ved design-tid. Du vil typisk override den i en "custom control". Derfor er den i denne kontekst ikke synderlig interessant.

  • CreateChildControls: Nedarvet fra Control -klassen. Kaldes af ASP.NET systemet. Skal typisk overskrives i custom controls. Ikke relevant for Page.

  • CreateControlCollection: Nedarvet fra Control -klassen. Opretter et ControlCollection -objekt der skal holde alle kontrollens (i dette tilfælde sidens) børnekontroller.

  • CreateHtmlTextWriter: Opretter det HtmlTextWriter -objekt der bruges til at tegne sidens indhold. Kaldes internt og skal typisk ikke kaldes af side-udvikleren.

  • CreateHtmlTextWriterFromType: Opretter et specifik HtmlTextWriter -objekt der bruges til at tegne sidens indhold. Kaldes internt og skal typisk ikke kaldes af side-udvikleren.

  • DataBind: Binder alle sidens databindingskontroller til deres datakilde.

  • DataBindChildren: Binder en datakilde til kontrollens børnekontroller.

  • DeterminePostBackMode: Returnerer et objekt af typen NameValueCollection som indeholder data der blev sendt tilbage til siden med en GET eller POST.

  • Dispose: Giver siden mulighed for at rydde op før den fjernes fra hukommelsen.

  • EnsureChildControls: Nedarvet fra Control. Denne metode er ikke interessant i forhold til Page. ASP.NET kalder den for at sikre sig at en serverkontrol har børnekontroller. Hvis du udvikler er custom servekontrol vil du typisk ikke skulle overskrive den.

  • EnsureID: Arvet fra Control. Hvis en kontrol ikke har en ID tildelt, sørger denne metode for at den får tildelt et unikt id. Ikke interessant i sammenhæng med Page.

  • Equals: Well, denne metoder kender du. Arvet fra Object.

  • Eval: Denne metoder evaluerer et data-bindings-udtryk.

  • ExecuteRegisteredAsyncTasks: Udfører en asynkron handling der er oprettet ved brug af klassen PageAsyncTask og registreret med metoden RegisterAsyncTask.

  • Finalize: Metode arvet fra Object.

  • FindControl: Gennemsøger sidens navnebeholder for den specificerede kontrol.

  • FindDataSourceControl: Returnerer den datakilde der er assosiceret med den specificeret kontrol. Dette er en extension metode.

  • FindFieldTemplate: Returnerer den specificerede kolonnes field template (indenfor kontrollens navnebeholder). Dette er en extension metode.

  • FindMetaTable: Returnerer den indeholdende datakontrols MetaTable objekt. Dette er en extension metode.

  • Focus: Arvet fra Control. Giver kontrollen inputfokus.

  • FrameworkInitialize: Initialiserer sidens kontroltræ ud fra den deklarative markup.

  • GetDataItem: Returnerer det data item der er øverst på data-bindings stakken.

  • GetGlobalResourceObject: Returnerer en resurse på applikationsniveau ud fra to specificerede nøgler.

  • GetHashCode: Velkendt metode fra Object.

  • GetLocalResourceObject: Returnerer en resurse på sideniveau ud fra en specificeret nøgle.

  • GetPostBackClientEvent: Skal ikke længere bruges.

  • GetPostBackClientHyperlink: Skal ikke længere bruges.

  • GetPostBackEventReference: Skal ikke længere bruges.

  • GetType: Arvet fra Object.

  • GetValidators: Returnerer en validationsgruppes validationskontroller.

  • HasControls: Arvet fra Control. Finder ud af om en kontrol har nogle børnekontroller.

  • HasEvents: Returnerer en værdi der indikerer om der er registreret nogle events for kontrollen, eller nogle af dens børnekontroller

  • InitializeCulture: Kan overskrives i af sideudvikleren, og bruges til at sætte sidens kultur (dvs. sprog, formaterring osv.).

  • InitOutputCache: Initialiserer sidens output cache for nuværende sideforespørgsel.

  • IsClientScriptBlockRegistered: Skal ikke længere bruges.

  • IsStartupScriptRegistered: Skal ikke længere bruges.

  • LoadControl: Indlæser en kontrol fra en fil.

  • LoadControlState: Genskaber gemt kontroltilstandsinformation fra tidligere sideanmodninger. Arvet fra Control.

  • LoadPageStateFromPersistenceMedium: Indlæser gemt view-state information. Bruges hvis du har specielle krav til gemning og indlæsning af view-state.

  • LoadTemplate: Returnerer en instans af ITemplate fra en ekstern fil.

  • LoadViewState: Arvet fra Control. Genskaber view-state fra tidligere sideanmodning.

  • MapPath: Returnerer den fulde fysiske sti som en virtuel sti angiver.

  • MapPathSecure: Arvet fra Control. Returnerer den fulde fysiske sti som en virtuel sti angiver. Kan kun bruges af kontroller der har tilladelse til at læse filer.

  • MemberwiseClone: Skaber en såkaldt "shallow" kopi af et objekt. Arvet fra Object.

  • OnAbortTransaction: Affyrer hændelsen AbortTransaction.

  • OnBubbleEvent: Arvet fra Control. Bruges hvis en kontrolhændelse skal bubble op i hierarkiet. Kan overskrives i en custom kontrol.

  • OnCommitTransaction: Affyrer hændelsen CommitTransaction.

  • OnDataBinding: Affyrer hændelsen Databinding.

  • OnError: Affyrer hændelsen Error.

  • OnInit: Affyrer hændelsen Init.

  • OnInitComplete: Affyrer hændelsen InitComplete når siden er blevet initialiseret.

  • OnLoad: Affyrer hændelsen Load.

  • OnLoadComplete: Affyrer hændelsen LoadComplete når siden er indlæst.

  • OnPreInit: Affyrer hændelsen PreInit - dette sker i begyndelsen af hele initialiseringsfasen.

  • OnPreLoad: Affyre hændelsen PreLoad.

  • OnPreRender: Affyrer hændelsen PreRender.

  • OnPreRenderComplete: Affyrer hændelsen PreRenderComplete.

  • OnSaveStateComplete: Affyrer SaveStateComplete hændelsen. Dette sker efter at sidens state er blevet gemt.

  • OnUnload: Affyrer hændelsen Unload.

  • OpenFile: Arvet fra Control. Returnerer en strøm der bruges til at læse en fil.

  • ParseControl: Parser en tekststreng der beskriver en kontrol (som i en .ascx fil) og returnerer et Control objekt.

  • RaiseBubbleEvent: Bruges sammen med OnBubbleEvent til at "boble" hændelser op i hierakiet. F.eks. en brugerkontrol indlejeret i et GridView, den oprindelige hændelse kan så håndteres i hændelsen RowCommand.

  • RaisePostBackEvent: Bruges af Page -objektet til at fortælle en kontrol, fx. en custom control, at den skal håndtere en indkommen postback event.

  • RegisterArrayDeclaration: Skal ikke længere bruges.

  • RegisterAsyncTask: Registrerer en ny asynkron handling med klassen.

  • RegisterClientScriptBlock: Skal ikke længere bruges.

  • RegisterHiddenField: Skal ikke længere bruges.

  • RegisterOnSubmitStatement: Skal ikke længere bruges.

  • RegisterRequiresControlState: Bruges til at registrere en kontrol som en hvis control state skal persisteres.

  • RegisterRequiresPostBack: Registrerer en kontrol som en der kræver postback-håndtering når siden blive postet back.

  • RegisterRequiresRaiseEvent: Bruges til at markere at en kontrol - der gives som argument til metoden - kræver at der affyres en hændelse når kontrollen behandles på siden. Mest til intern brug.

  • RegisterRequiresViewStateEncryption: Registrerer en kontrol som en der kræver kryptering af view-state. Bruges hvis du udvikler en custom control og du ønsker at dens view state skal krypteres.

  • RegisterStartupScript: Skal ikke længere bruges.

  • RegisterViewStateHandler: Kaldes af Form-objektet og fortæller siden af view-staten skal gemmes (dvs. persisteres). Hvis du laver en custom HtmlForm objekt kan du kalde denne metode for at gemme view state.

  • RemovedControl: Arvet fra Control. Bliver efter af der er blevet fjernet en kontrol fra nuværende kontrols kontrolsamling.

  • Render: Initialiserer et skriveobjekt (af typen HtmlTextWriter) og sender en renderingsbesked til alle sidens børnekontroller.

  • RenderChildren:Arvet fra Control. Outputter indholdet af kontrollens børn til det givne skriveobjekt.

  • RenderControl: Outputter kontrollen til det givne skriveobjekt - og i dette tilfælde er kontrollen sideobjektet.

  • RequiresControlState: Returnerer sand såfremt den angivne kontrol deltager i håndtering af dens control state.

  • ResolveAdapter: Arvet fra Control. Returnerer den "control-adapter" der er ansvarlig for rendering af kontrollen.

  • ResolveClientUrl: Arvet fra Control. Inputtet til metoden er en relativ URL til en resurse, og der returneres en fuldt kvalificeret URL.

  • ResolveUrl: Returnerer en URL som kan bruges på klienten.

  • SaveControlState: Arvet fra Control. Gemmer nyt control state (i forhold til sidste post-back).

  • SavePageStateToPersistenceMedium: Gemmer al view- og control- state på siden.

  • SaveViewState: Gemmer ny view state (i forhold til den sidste post-back).

  • SetDesignModeState: Arvet fra Control. Sætter designtids data for kontrollen.

  • SetFocus: Sætter browserens forkus på den angivne kontrol.

  • TestDeviceFilter: Returnerer en boolsk værdi der angiver om et givent device filter gælder for nuværemde HTTP forespørgsel.

  • ToString: Returnerer en tekststreng der beskriver objektet. Arvet fra Object.

  • TrackViewState: Arvet fra Control. Sporer ændringer af view-state så de kan gemmes. Kaldes autoatisk på kontrollerne - du skal kun kalde den såfremt du udvikler din egen databundne kontrol.

  • UnregisterRequiresControlState: Når denne metode kaldes stopper siden med at gemme control strate for den angiven kontrol.

  • Validate: Beder alle valideringskontroller på siden om at validere deres tildelte information.

  • VerifyRenderingInServerForm: Alle kontroller på en side skal placeres inden i et <form runat="server"> element. Du kan kalde denne metode for at bekræfte af det rent faktisk er tilfældet for den angivne kontrol. Bruges typisk når du udvikler en custom control.

  • XPath: Evaluerer et XPath bindingsudtryk.

  • XPathSelect: Evaluerer et XPath bindingsudtryl og returnerer en samling af knuder der implementerer IEnumerable.




Hvad synes du om denne artikel? Giv din mening til kende ved at stemme via pilene til venstre og/eller lægge en kommentar herunder.

Del også gerne artiklen med dine Facebook venner:  

Kommentarer (1)

User
Bruger #16651 @ 09.10.11 21:11
Virkelig en yderst gennemarbejdet og flot artikel der gennemgår så mange detaljer! BRAVO!!
Du skal være logget ind for at skrive en kommentar.
t