Kako postaviti pametne telefone i računala. Informativni portal
  • Dom
  • Recenzije
  • Dijeljenje HTML oznaka i naredbi skriptnog jezika. Dodavanje naredbi poslužiteljskoj skripti

Dijeljenje HTML oznaka i naredbi skriptnog jezika. Dodavanje naredbi poslužiteljskoj skripti

Datoteka aktivna Server Pages (ASP) je tekstualna datoteka s nastavkom ".asp". Ova datoteka može sadržavati:

  • tekstualni podaci;
  • oznake HTML jezik;
  • poslužiteljske skripte.

Za brzo stvaranje“.asp” datoteku, samo preimenujte HTML datoteku promjenom ekstenzije “.htm” ili “.html” u “.asp”. Ako datoteka ne sadrži ASP funkcije, poslužitelj jednostavno jednostavno šalje datoteku na računalo korisnika. Ova značajka pruža dodatnu pogodnost za web programere, koji datotekama mogu dati ekstenziju ".asp" čak i ako ne namjeravaju naknadno uključiti ASP značajke.

Da biste svoju novostvorenu .asp datoteku objavili na Internetu, morate je spremiti u virtualni direktorij na vašem web-mjestu (koje mora imati dopuštenja za skriptu ili pokretanje). Nakon toga, možete pristupiti ovoj datoteci u zahtjevu tako da navedete odgovarajuću datoteku u svom pregledniku. URL adresa. (Jedna stvar koju treba zapamtiti je da budući da ASP stranice moraju biti prikazane na poslužitelju, unesite fizički put do datoteke ".asp" u u ovom slučaju nevažeći.) Datoteka koju šalje poslužitelj kada se gleda u pregledniku je HTML stranica. Ovo ima određenog smisla, jer prije slanja datoteke, poslužitelj je pokreće raščlanjivanje i izvršavaju se sve skripte ASP poslužitelja. Stoga korisnici uvijek dobivaju obične HTML datoteke.

Datoteke ".asp" mogu se stvoriti u bilo kojem uređivač teksta. Kako budete stjecali iskustvo, možda će vam biti zgodnije raditi posebni urednik koji uključuje dodatnu ASP podršku, kao što je Microsoft® Visual InterDev™. ( dodatne informacije pogledajte web stranicu Microsoft Visual InterDev na http://msdn.microsoft.com/vinterdev/.)

Dodavanje naredbi poslužiteljskoj skripti

Poslužiteljska skripta sastoji se od niza uputa koje osiguravaju da se naredbe šalju web poslužitelju jedna po jedna. (Web programeri mogu biti upoznati sa skriptama na strani klijenta koje se izvode u web pregledniku.) .asp datoteke koriste razdjelnike za odvajanje skripti od tekstualnih podataka i HTML naredbi. Separator je znak ili niz znakova koji označava početak ili kraj odjeljka. HTML jezik koristi simbole () kao takve graničnike između kojih se nalaze HTML oznake.

U ASP-u, naredbe skripte su zatvorene u . Razdjelnici mogu biti bilo koje važeće naredbe u skriptnom jeziku koji koristite. Dolje je primjer jednostavne HTML stranice s naredbama skripte.

Ova je stranica posljednji put osvježena dana.

Funkcija VBScript Now() vraća trenutni datum i vrijeme. Kada se ova stranica obradi, web-preglednik će zamijeniti trenutni datum i vrijeme i vratiti stranicu u preglednik sa sljedećim rezultatom:

Ova stranica je posljednji put osvježena 29.01.99 14:20:00.

Pozivaju se naredbe zatvorene graničnicima glavne ekipe scenariji i obrađuju se korištenjem temeljnog skriptnog jezika. Naredba unutar graničnika mora biti važeća naredba u glavnom skriptnom jeziku. Prema zadanim postavkama, primarni skriptni jezik je VBScript; Također možete dodijeliti drugi zadani skriptni jezik. Pogledajte Rad sa skriptnim jezicima.

Programeri skripti na strani klijenta upoznati su s HTML oznakom koja se koristi za označavanje naredbi i izraza. U skriptama na strani poslužitelja, oznaka se može koristiti za definiranje procedura na više jezika sadržanih u jednoj ".asp" datoteci. Za više informacija o ovoj temi pogledajte Rad sa skriptnim jezicima.

Dijeljenje HTML oznake i naredbe skriptnog jezika

ASP razgraničivači mogu sadržavati bilo koju naredbu, izraz, proceduru ili operator koji je dopušten u glavnom skriptnom jeziku koji koristite. Pod, ispod upute u VBScriptu i drugim skriptnim jezicima, razumije se sintaktički potpuna konstrukcija koja opisuje jednu vrstu akcije, deklaracije ili definicije. Primjer često korištene izjave je If...Then...Else izjava:

Ovisno o dobu dana, string varijabli strGreeting u skripti se dodjeljuje vrijednost "Dobro jutro!" ("Dobro jutro!") ili "Zdravo!" "Zdravo!". Uputa šalje trenutnu vrijednost varijable pregledniku.

Tako je do 12:00 sati (po lokalnom vremenu) na zaslonima korisnika prikazan sljedeći redak:

Dobro jutro!

Nakon 12:00 korisnici će vidjeti sljedeću poruku:

Između različitih dijelova uputa može postojati HTML tekst. Stoga je rezultat izvršavanja sljedeće skripte s oznakama HTML jezika i naredbom If...Then...Else isti kao u gornjem primjeru:

Dobro jutro!

Zdravo! Ako je uvjet naveden u skripti zadovoljen (podne još nije stiglo), web poslužitelj šalje pregledniku navedenom u uvjetu("Dobro jutro"). U suprotnom, niz ("Hello!") naveden nakon Else šalje se pregledniku. Ova vrsta izmjene između HTML teksta i naredbi skripte često se koristi pri radu s naredbom If...Then...Else. Korištenje gore spomenutog dizajna je zgodno ako želite prikazati pozdrav na nekoliko mjesta na web stranici. Vrijednost varijable postavlja se samo jednom, nakon čega se može koristiti više puta.

HTML tekst također se može proslijediti pregledniku izravno iz naredbe skripte, umjesto da se postavlja između različite ekipe. Vraćanje teksta u preglednik obavlja ugrađeni objekt ASP Response. Rezultat pokretanja sljedeće skripte je isti kao u prethodnom primjeru:

Naredba Response.Write šalje tekst koji slijedi u preglednik. Izjava Response.Write trebala bi se koristiti u slučajevima kada se tekst vraćen u preglednik mora generirati dinamički. Tako, na primjer, možete stvoriti niz od vrijednosti nekoliko varijabli. Kako biste saznali više o objektu Response posebno i o objektima općenito, pogledajte Korištenje komponenti i objekata i Slanje sadržaja web-pregledniku. Za sada imajte na umu da se dodavanje naredbi skripte na HTML stranicu može izvršiti na nekoliko načina.

Prihvatljivo je uključiti procedure napisane u osnovnom skriptnom jeziku koristeći ASP graničnike. Za više informacija pogledajte Rad sa skriptnim jezicima.

Prilikom izrade skripte na JScript jezik blokovi uputa mogu se uključiti izravno u ASP naredbe vitičaste zagrade. Ove strukture također dopuštaju prisutnost HTML oznaka i teksta. Primjer.

Ovo je tekstualna verzija stranice. Ovo je multimedijska verzija stranice.

Rad s ASP direktivama

ASP pruža direktive koje nisu dio korištenog skriptnog jezika: direktivu za izlaz podataka i direktivu za obradu podataka.

U ASP-u izlazna direktiva omogućuje prikaz vrijednosti izraza na ekranu. Ova izlazna direktiva je ekvivalentna naredbi Response.Write. Na primjer, izraz se može koristiti za prikaz riječi Baltimore (trenutna vrijednost varijable) u pregledniku.

Direktiva obrade omogućuje vam prosljeđivanje podataka ASP-u koji su potrebni za obradu ".asp" datoteke. U sljedeći primjer prikazuju se direktive za VBScript kao glavni skriptni jezik na stranici:

Uputa za obradu mora biti prvi red u datoteci ".asp". Ako stranica treba sadržavati više direktiva, one moraju biti unutar istog para graničnika. Uključivanje direktiva za obradu u datoteku pomoću naredbe #include nije dopušteno. (Za više informacija pogledajte

Sljedeći primjer postavlja jezik skripte i kodnu stranicu:

Prazna mjesta u skriptama

Ako je primarni jezik skripte VBScript ili JScript, ASP automatski uklanja prazan prostor koji se može pojaviti u naredbama. U slučaju drugih skriptnih jezika, ove praznine su sačuvane. To osigurava da se naredbe ispravno tumače u jezicima gdje su položaj i uvlačenje elemenata važni. Prazni prostori su razmaci, tabulatori, znakovi za početak i prijelomi redaka.

VBScript i JScript dopuštaju ostavljanje razmaka iza graničnika za otvaranje i prije graničnika za zatvaranje. To čini naredbe lakšim za čitanje. Dakle, dolje navedene upute su točne:

Razmak između graničnika zatvaranja jednog iskaza i graničnika otvaranja drugog automatski se uklanja u ASP-u. Međutim, upotreba razmaka olakšava čitanje. Da biste održali razmak između dvije izjave, na primjer kada prikazujete vrijednosti varijabli u izjavi, trebali biste koristiti HTML neprekinuti znak razmaka (). Na primjer:

@foreach (var item in rows) ( // učini nešto )

Ugniježđeni izrazi ili izjave ne počinju znakom @...

< ul >@ foreach (var item in rows) ( if (item.Equals(x)) ( // učini nešto ) )

Osim ako nisu odvojeni od vanjskog izraza ili izjave nepodudarnim oznakama

< ul >@foreach (promjena stavke u redovima) (< li >@ if (item.Equals(x)) ( // učini nešto ) )

@znak se koristi u Razoru za prikaz vrijednosti varijabli, izraza i iskaza pregledniku:

@DateTime .Now @(someCondition ? x:y )

Varijable unutar izraza i naredbi ne bi trebale imati ispred znak @.

Ako želite prikazati običan tekst ili neusklađene oznake dok ste unutar bloka iskaza, koristite znak @ iza kojeg slijedi dvotočka kako biste rekli Razoru da ono što slijedi nije C# kod:

@ if (stavka == x) // čisti tekst ( @: Vrijeme je @ DateTime .Sada ) @ if (stavka == x) // oznake bez podudaranja ( @:< ul >) inače ( @:< ol >) Identifikatori

Identifikator u C# je ime dano prostoru imena, klasi, varijabli, svojstvu, metodi, sučelju itd. Pravila određuju što čini važeći identifikator. Dopušteno je koristiti C# ključnu riječ kao identifikator, ali ako to učinite, morate koristiti znak @ kako biste spriječili pogreške tijekom kompajliranja. Savjetujemo vam da ne koristite ključnu riječ kao identifikator, ali postoje trenuci kada to ne možete izbjeći.

Neka preopterećenja klasa HtmlHelper (Web stranice i MVC) prihvaćaju objekt koji predstavlja HTML atribute koji se prikazuju kao dio oznake koju predstavlja pomoćnik. Sljedeći primjer dodaje atribut stila unosu teksta i postavlja njegovu vrijednost na width:100%; :

@Html.TextBoxFor(model => novo ( style = "width:100%;" ))

Kada to učinite, stvarate anonimni tip sa svojstvom koje se zove stil za predstavljanje HTML atributa. Ako ti želiš da biste postavili CSS atribut klase putem ove metode, trebate dodati svojstvo anonimnom tipu pod nazivom klasa - što je C# ključna riječ. Stoga morate koristiti znak @ da biste omogućili korištenje klase u ovom slučaju:

@Html.TextBoxFor(model => model.FirstName, htmlAtributi: novo ( @class = "puna širina"))

Pogreška koju često ponavljam na ASP.NET forumima je primjena znaka @ na sva druga svojstva anonimnog tipa, što jednostavno nije potrebno. Neki ljudi čak misle da je znak @ koji se ovdje koristi dio pravila Razor sintakse. Nije. Njegova je uporaba ovdje mnogo prije Razora.

Doslovni string literali

Doslovni string literal u C# sastoji se od znaka @ iza kojeg slijedi literalni niz u dvostrukim navodnicima i završava točkom-zarezom, npr.

var s = @"Hello World" ;

Dvije prednosti korištenja verbatim string literala uključuju činjenicu da samo trebate izbjeći dvostruke navodnike (njihovim udvostručenjem); i niz može obuhvaćati više redaka u kodu bez potrebe za znakovima za nastavak. Iz ovih razloga, verbatim string literali su najprikladniji za predstavljanje staza (koje bi inače trebale izbjeći svoje kose crte) i obrasce regularnih izraza (koji također mogu zahtijevati da se obrnute kose crte izbjegnu).

Regularni izraz re = novi regularni izraz (@"\w\d(1,3)\.\d(1,3)\.\d(1,3).\d(1,3)\w" );

Također su korisni za predstavljanje velikih blokova teksta ako ih je potrebno uključiti u kod na čitljiv način, kao što su SQL naredbe koje se mogu koristiti u aplikacijama web stranica:

var sql = @"SELECT p.ProductName, o.UnitPrice, o.Quantity, (o.UnitPrice * o.Quantity) - (o.UnitPrice * o.Quantity * o.Discount) Kao TotalCost FROM OrderDetails o INNER JOIN Proizvodi p ON o.ID proizvoda = p.ID proizvoda WHERE o.ID narudžbe = @0" ;

Upotreba znaka @ u ovom kontekstu opet nema nikakve veze sa sintaksom Razora.

Sažetak

Ako ste se ikada zapitali kada i gdje biste trebali koristiti znak @ u svom ASP.NET kodu, nadamo se da je ovaj članak pomogao riješiti vašu zabunu.

Klasa stranice

Sada kada ste vidjeli što je životni ciklus stranice i kako stranica sadrži kontrole, pomaže istaknuti da je sama stranica također instancirana kao kontrolni objekt. U stvarnosti su svi web obrasci zapravo instance klase Page iz ASP.NET-a, koja se nalazi u prostoru imena Sustav.Web.UI.

Vjerojatno ste ovo već pogodili primijetivši da svaka klasa iza koda jasno nasljeđuje System.Web.UI.Page. To znači da svaki web obrazac koji izradite odmah dobiva ogromnu količinu funkcionalnosti, kao što je prethodno viđena metoda FindControl() i svojstvo IsPostBack. Osim toga, nasljeđivanje od Page također vašem kodu daje pristup sljedećim izuzetno korisnim svojstvima:

Mnoga od ovih svojstava odgovaraju internim objektima koji se mogu koristiti u klasičnim ASP.NET web stranicama. Međutim, u klasična verzija ASP je pristupio ovoj funkcionalnosti pomoću ugrađenih objekata koji su uvijek bili dostupni. U ASP.NET-u, svaki od ovih ugrađenih objekata zapravo odgovara svojstvu Page, koje pruža instancu potpuno funkcionalne klase.

Ovi objekti su detaljnije opisani u sljedećim odjeljcima.

Objekti sesije, aplikacije i predmemorije

Objekt Sesije je instanca klase System.Web.SessionState.HttpSessionState. Dizajniran je za pohranjivanje bilo koje vrste korisničkih podataka koji trebaju postojati između zahtjeva web stranice. Objekt Session pruža pristup rječniku skupu parova ime-vrijednost koji predstavljaju korisničke podatke za tu sesiju. Stanje sesije često se koristi za održavanje informacija kao što su korisničko ime i ID, košarica za kupnju ili druge stavke koje se brišu kada korisnik više ne posjećuje stranice web-mjesta.

Application objekt je instanca klase System.Web.HttpApplicationState. Kao i objekt Session, on je također rječnik podataka ime-vrijednost. Međutim, ti su podaci globalni za cijelu aplikaciju.

O Objekt predmemorije, onda je to instanca klase System.Web.Caching.Cache. Također pohranjuje globalne informacije, ali nudi skalabilniji mehanizam za pohranu jer ASP.NET može brisati objekte ako poslužitelju ponestane memorije. Kao i drugi skupovi stanja, to je u biti zbirka objekata ime-vrijednost, ali također možete postaviti prilagođena pravila isteka i definirati ovisnosti za svaki element.

Odabir načina provedbe upravljanja državom jedan je od ključni zadaci razvoj web aplikacija.

Objekt zahtjeva

Objekt Request je instanca klase System.Web.HttpRequest. Ovaj objekt predstavlja vrijednosti i svojstva HTTP zahtjeva koji je rezultirao učitavanjem stranice. Sadrži sve parametre vezane uz URL, kao i sve ostale podatke koje je poslao klijent. Velik dio informacija koje pruža Request objekt umotan je u apstrakcije koje su više visoka razina(na primjer, omot ASP.NET Web Control Model), tako da nije ni približno toliko važan kao što je bio u klasičnom ASP razvoju.

Međutim, objekt Zahtjev još uvijek se može koristiti, na primjer, da biste saznali koji preglednik klijent koristi ili da biste stvorili kolačiće i zatim ispitali njihov sadržaj.

Tablica u nastavku navodi neka od najčešće korištenih svojstava objekta Request:

Svojstva HttpRequest objekta Opis nekretnine
AnonymousID Jedinstveno identificira trenutni korisnik, ako je omogućen anonimni pristup.
ApplicationPath i PhysicalApplicationPath ApplicationPath dohvaća informacije o lokaciji virtualnog direktorija (URL) ASP.NET aplikacije, a PhysicalPath dohvaća informacije o lokaciji svog "pravog" direktorija
preglednik Pruža referencu na objekt HttpBrowserCapabilities, koji sadrži svojstva koja opisuju različita funkcionalnost preglednik, primjerice podržava li elemente ActiveX kontrole, kolačići, VBScriptovi i okviri
Certifikat klijenta Objekt HttpClientCertificate koji daje sigurnosni certifikat za trenutni zahtjev, ako postoji
Kolačići Omogućuje zbirku kolačića poslanih uz ovaj zahtjev
FilePath i CurrentExecutionFilePath Vrati pravi put datoteke (u odnosu na poslužitelj) za stranicu koja se trenutno izvodi. FilePath predstavlja stranicu koja je započela proces izvršenja. Ovo je isto što i CurrentExecutionFilePath, osim ako ste korisnika premjestili na novu stranicu bez preusmjeravanja (na primjer, korištenjem metode Server.Transfer()), u kojem slučaju CurrentExecutionFilePath odražava novu stranicu, a FilePath navodi izvornu stranicu
Oblik Predstavlja zbirku varijabli obrasca poslanih natrag na stranicu. U većini slučajeva, umjesto korištenja dane zbirke, dohvatit ćete ove informacije iz svojstava kontrole
Zaglavlja i varijable poslužitelja Pružite rječničku zbirku HTTP zaglavlja i poslužiteljskih varijabli, indeksiranih po imenu. Te se zbirke uglavnom sastoje od informacija niske razine koje je preglednik poslao zajedno s web-zahtjevom (na primjer, informacije o vrsti preglednika, funkcionalnosti koju podržava, jezičnim postavkama koje je postavio, identitetima koji se koriste za provjeru autentičnosti podataka, itd.). Obično je ove informacije puno lakše dobiti iz drugih svojstava HttpRequest objekta ili ASP.NET klasa više razine
IsAuthenticated i IsSecureConnection Vrati true ako je korisnik uspješno autentificiran i korisnik je povezan putem protokola Secure Sockets Layer (SSL).
IsLocal Vraća true ako korisnik zatraži stranicu s lokalnog računala
QueryString Pruža parametre proslijeđene u nizu upita
Url i UrlReferrer Vrati Uri objekt koji predstavlja adresu trenutne stranice i stranicu s koje korisnik dolazi (prethodna stranica koja sadrži vezu na ovu stranicu)
Korisnički agent Niz koji predstavlja vrstu preglednika. Internet Explorer daje MSIE vrijednost za ovo svojstvo. ASP.NET koristi ove informacije kako bi otkrio koja je to vrsta preglednika govorimo o, a time i za određivanje funkcionalnosti koje ovaj preglednik treba podržavati (kao što su kolačići, JavaScript itd.). To zauzvrat može utjecati na način na koji se web kontrole prikazuju.
UserHostAddress i UserHostName Dohvaća informacije o IP adresi i DNS imenu udaljeni klijent. Ovim informacijama također se može pristupiti kroz kolekciju ServerVariables. Međutim, zbog prevođenja mrežnih adresa (NAT), to nije uvijek smisleno. Ovisno o tome kako se spajaju na Internet, mnogi klijenti mogu dijeliti istu IP adresu (na primjer, IP adresu računala pristupnika). Osim toga, IP adresa se također može promijeniti nakon izvršenja nekoliko zahtjeva.
Korisnički jezici Pruža razvrstani niz nizova koji navodi klijentove jezične postavke. Može biti korisno pri izradi višejezičnih stranica
Objekt odgovora

Objekt Response je instanca klase System.Web.HttpResponse i predstavlja odgovor web poslužitelja na zahtjev klijenta. U klasičnom razvoju ASP-a, Response object je bio jedini način programsko slanje HTML teksta klijentu.

Kontrole poslužitelja sada sadrže ugniježđene objektno orijentirane metode koje se same prikazuju. Programer treba samo postaviti vrijednosti svojih svojstava. Dakle, objekt Response nije ni približno središnji kao što je nekad bio.

Sljedeća tablica navodi neke od najčešće korištenih članova klase HttpResponse:

Članovi klase HttpResponse Opis metode ili svojstva
BufferOutput Kada je ovo svojstvo postavljeno na true (zadano), stranica se ne šalje klijentu sve dok se ne prikaže i bude spremna za slanje u cijelosti, umjesto da se šalje u dijelovima. U nekim specifičnim scenarijima ima smisla postaviti ovo svojstvo na lažno.
Najočitiji primjer je kada klijent preuzima velika datoteka. Ako je svojstvo BufferOutput postavljeno na false, klijent će vidjeti dijaloški okvir za spremanje i moći će odabrati naziv datoteke prije nego što se datoteka u potpunosti preuzme
Predmemorija Ovo se svojstvo odnosi na objekt HttpCachePolicy, koji vam omogućuje konfiguriranje predmemoriranja izlaza
Kolačići Ovo svojstvo omogućuje pristup zbirci kolačića koji se šalju zajedno s odgovorom. Može se koristiti za dodavanje dodatnih kolačića
Istječe i Istječe Apsolutno Ova se svojstva mogu koristiti za spremanje u predmemoriju prikazanog HTML-a stranice, poboljšavajući izvedbu na sljedećim zahtjevima.
IsClientConnected Ovo je Booleova vrijednost koja pokazuje je li klijent povezan s poslužiteljem. Ako već nije spojen, možda ćete morati zaustaviti neku dugotrajnu operaciju
Preusmjeri() Ova metoda uzrokuje da preglednik zatraži drugačiji URL koji upućuje na novu stranicu web aplikacije ili na drugo web mjesto
RedirectPermanent() Ova metoda preusmjerava preglednik na novi URL, slično kao metoda Redirect(). Razlika je u tome što koristi kod HTTP stanja 301 (što označava da je stranica trajno premještena) umjesto 302 (što označava da je stranica privremeno premještena)
RedirectToRoute() i RedirectToRoutePermanent() Ove su metode slične metodama Redirect() i RedirectPermanent(). Jedina razlika je u tome što koriste rutu (registrirani URL uzorak koji se ne preslikava izravno na stranicu)
Prijenos() Ova metoda govori ASP.NET-u da zaustavi obradu trenutne stranice i prijeđe na novu (određenu) stranicu web obrasca. U tom slučaju nije potreban puni ciklus slanja i obavijest preglednika i korisnika web aplikacije
TransferRequest() Ova je metoda slična Transfer(), ali vam omogućuje prijenos korisnika na drugu vrstu stranice. Na primjer, može se koristiti za slanje korisnika s ASP.NET web obrasca na HTML stranicu.
Kada se koristi, cijeli IIS cjevovod se pokreće za obradu novog resursa, zajedno sa svim povezanim HTTP modulima. Ali postoji niz značajnih ograničenja povezanih s metodom TransferRequest(). Za korištenje mora se koristiti IIS web poslužitelj 7 u integriranom načinu rada. Osim toga, morat ćete osloboditi stanje sesije (ako je stečeno) kako biste spriječili duga kašnjenja
ContentType Ovo svojstvo predstavlja zaglavlje koje pregledniku govori kakvu vrstu sadržaja treba primiti. Tipično, ASP.NET Web Forms, kao i sve web stranice, koriste tekstualni/html sadržaj (tekst pomiješan s HTML-om). Međutim, u načelu bi se mogao stvoriti poseban HTTP rukovatelj za posluživanje drugih vrsta sadržaja
OutputStream Ovo svojstvo predstavlja podatke koji se šalju pregledniku kao tok bajtova niske razine. Može se koristiti za spajanje na .NET threading model
Pisati() Ova metoda omogućuje pisanje teksta izravno u tok odgovora. Obično je bolje umjesto toga upotrijebiti kontrolni model i pustiti kontrole da generiraju svoje vlastite HTML oznake. Pokušavajući koristiti metodu Response.Write() s kontrolnim modelom, programer gubi mogućnost odlučivanja gdje bi tekst trebao ići na stranici.
Međutim, metoda Response.Write() važna je u situacijama kada se kontrole koje generiraju vlastiti HTML prikaz moraju izgraditi ispočetka
BinaryWrite() i WriteFile() Ove metode vam omogućuju da uzmete binarni sadržaj iz niza bajtova ili datoteke i zapišete ga izravno u tok odgovora. Koristite ih sa elementi poslužitelja kontrole su besmislene, ali mogu biti vrlo korisne pri stvaranju prilagođenog HTTP rukovatelja.
Na primjer, možete stvoriti HTTP rukovatelj koji čita podatke za PDF dokument iz unosa baze podataka i piše ih izravno u tok odgovora pomoću metode BinaryWrite(). Na strani klijenta, krajnji rezultat će izgledati potpuno isto kao da je korisnik učitao statičnu PDF datoteku. Kada pišete sadržaj koji nije HTML, svakako postavite svojstvo ContentType na odgovarajuću vrijednost
Krećite se između stranica

Najvažnija funkcija klase HttpResponse je pružanje malog skupa metoda koje vam omogućuju navigaciju s jedne stranice na drugu. Najuniverzalniji od njih je metoda Redirect(), koja vam omogućuje preusmjeravanje korisnika na drugu stranicu. Ispod je primjer njegove primjene:

// Preusmjeri na datoteku u trenutnom direktoriju. Response.Redirect("PageFlow.aspx"); // Preusmjeravanje na drugu web stranicu. Response.Redirect("http://www.google.com");

Metoda Redirect() zahtijeva puni ciklus otpreme. U biti, šalje poruku pregledniku zbog koje traži novu stranicu.

Metoda Redirect() ima preopterećenje koje uzima Booleovu vrijednost kao drugi parametar. Ova vrijednost određuje treba li kod stranice nastaviti s izvođenjem. Prema zadanim postavkama, iako Redirect() preusmjerava korisnika i zatvara vezu, sav preostali kod u metodi i dalje će se izvršavati zajedno s ostatkom događaja na stranici. To omogućuje čišćenje ako je potrebno. Ali ako je drugi parametar istinit, ASP.NET će odmah zaustaviti obradu stranice, potencijalno smanjujući radno opterećenje web poslužitelja.

Ako trebate prenijeti korisnika na drugi web obrazac unutar iste web aplikacije, možete pristupiti brže korištenjem metode Server.Transfer(). Međutim, ova metoda ima neke osobitosti. Budući da se preusmjeravanje događa na strani poslužitelja, izvorni URL ostaje u prozoru web preglednika klijenta. U biti, preglednik nema načina da zna da zapravo prikazuje drugu stranicu. Ovo ograničenje uzrokuje probleme kada klijent osvježi ili označi stranicu.

Dodatno, metoda Server.Transfer() ne može prenijeti kontrolu na stranicu koja nije ASP.NET ili web stranicu koja se nalazi u drugoj web aplikaciji ili web mjestu.

Za prelazak s jedne stranice na drugu dostupna je još jedna tehnika - objavljivanje na više stranica. Omogućuje vam stvaranje stranice koja se sama šalje na drugu stranicu, omogućujući prosljeđivanje svih informacija o stanju pogleda i sadržaja svih kontrola.

U ASP.NET 4, klasa HttpResponse uvela je još jednu metodu za preusmjeravanje korisnika - RedirectPermanent(). Ova metoda radi isto što i Redirect(), tj. šalje poruku za preusmjeravanje pregledniku pokazujući da treba zatražiti novu stranicu. Međutim, umjesto HTTP statusnog koda 302 (privremeno preusmjeravanje), koristi se kod 301 (koji označava trajno preusmjeravanje). Za web preglednike ova razlika nije bitna, ali za tražilice je vrlo važna. Kada alat za indeksiranje weba istražuje web mjesto i primi statusni kod 301, on ažurira direktorij svojim pretraživač, ispunjavajući ga informacijama o novom URL-u.

To znači da se metode Redirect() i RedirectPermanent() moraju koristiti na vrlo različite načine. Metoda Redirect() trebala bi se koristiti za pružanje normalne navigacije i kontrole tijeka u aplikaciji (na primjer, kada korisnik prolazi kroz neku vrstu postupka provjere), a metoda RedirectPermanent() trebala bi se koristiti kada se traži stari URL koji je prethodno podržan ali se više ne koristi.

Obično će se metoda Redirect() pozvati negdje u kodu web obrasca, dok će se metoda RedirectPermanent() pozvati u kodu aplikacije, točnije u metodi Application_BeginRequest() unutar datoteke global.asax. To će vam omogućiti da upravljate svim svojim trajnim preusmjeravanjima na jednom mjestu bez potrebe da čuvate dopune za stare stranice. Dolje je primjer:

Protected void Application_BeginRequest(object sender, EventArgs e) ( // Web aplikacija više ne sadrži about.aspx stranicu if (Reguest.FilePath == "/about.aspx") ( Response.RedirectPermanent("/about/about-Us) . aspx"); ) // (Ovdje dodajte dodatna preusmjeravanja.) )

Objekt poslužitelja

Objekt Server je instanca klase System.Web.HttpServerUtility i pruža niz pomoćnih metoda i svojstava, koji su navedeni u tablici:

Članovi klase HttpServerUtility Opis metode ili svojstva
Naziv stroja Svojstvo koje predstavlja naziv računala na kojem je stranica pokrenuta. Ovo je naziv web poslužitelja koji koristi računalo za njegovu identifikaciju ostatku mreže
GetLastError() Dohvaća objekt iznimke za najnoviju pogrešku (ili nultu referencu ako ne postoji). Ova se pogreška trebala pojaviti tijekom obrade trenutnog zahtjeva i nije obrađena. Najčešće se koristi u rukovatelju aplikacijskim događajima koji provjerava situacije kvara
HtmlEncode() i HtmlDecode() Zamjenjuje normalni niz važećim nizom HTML znakova(i obrnuto)
UrlEncode() i UrlDecode() Zamjenjuje uobičajeni niz s nizom važećih URL znakova (i obrnuto)
MapPath() Vraća fizički put do datoteke koja odgovara određenom virtualni put u datoteku na web poslužitelju. Pozivanje MapPath() s / vraća fizički put do korijenskog direktorija web aplikacije. Također podržava staze koje sadrže znak tilde (~) koji predstavlja korijenski direktorij web stranice (na primjer, ~/homepage.aspx)
Prijenos() Prebacuje izvršenje na drugu web stranicu u trenutna primjena. Ova je metoda slična Response.Redirect(), ali je brža. Ne može se koristiti za premještanje korisnika na web mjesto koje se nalazi na drugom web poslužitelju ili na stranicu koja nije ASP.NET (kao što je HTML ili ASP)

Metoda Transfer() je najviše na brz način premještanje korisnika na drugu stranicu aplikacije. Kada koristite ovu metodu, puni ciklus slanja se ne događa. Umjesto toga, ASP.NET mehanizam jednostavno učitava novu stranicu i počinje je obrađivati. Kao rezultat toga, URL prikazan u pregledniku klijenta se ne mijenja.

MapPath() je još jedna korisna metoda na objektu poslužitelja. Na primjer, pretpostavimo da želite učitati datoteku pod nazivom info.txt iz trenutnog virtualnog direktorija. Umjesto tvrdog kodiranja staze, možete koristiti metodu Server.MapPath() i koristiti je za pretvaranje relativni put vašoj web aplikaciji u cijelom fizičkom putu.

HTML i URL kodiranje

Klasa poslužitelja također sadrži metode koje pretvaraju obične nizove u prikaz koji se može sigurno koristiti kao dio URL-a ili prikazati na web stranici. Na primjer, recimo da ćete prikazati sljedeći tekst na web stranici:

Označiti

Koristi se za označavanje odlomka.

Ako pokušate napisati ove podatke na stranici ili ih postaviti u kontrolu, dobit ćete sljedeće:

Oznaka se koristi za identifikaciju odlomka.

Tekst

Neće se pojaviti, a preglednik ga tumači kao da uključuje odlomak. Da biste zaobišli ovo automatsko ponašanje, morat ćete pretvoriti potencijalne problematične vrijednosti u posebne HTML ekvivalente. Na primjer,< превратится в < в окончательной HTML-странице, а браузер отобразит этот символ как

Najbolji članci na temu