Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Recenzije
  • Dijeljenje HTML oznaka i naredbi jezika skriptiranja. Dodavanje komandi serverskoj skripti

Dijeljenje HTML oznaka i naredbi jezika skriptiranja. Dodavanje komandi serverskoj skripti

File Active Server Pages (ASP) je tekstualna datoteka sa ekstenzijom ".asp". Ovaj fajl može sadržavati:

  • tekstualni podaci;
  • oznake HTML jezik;
  • serverske skripte.

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

Da biste objavili svoju novostvorenu .asp datoteku na Internetu, morate je sačuvati u virtuelnom direktorijumu na vašoj veb lokaciji (koja mora imati dozvole za skriptu ili pokretanje). Nakon toga, ovoj datoteci možete pristupiti u zahtjevu tako što ćete navesti odgovarajuću datoteku u vašem pretraživaču. URL adresa. (Jedna stvar koju treba zapamtiti je da pošto ASP stranice moraju biti prikazane na serveru, unos fizičke putanje do ".asp" datoteke u u ovom slučaju nevažeći.) Datoteka koju server šalje kada se gleda u pretraživaču je HTML stranica. Ovo ima određenog smisla, jer prije slanja fajla, server ga pokreće raščlanjivanje i sve ASP serverske skripte se izvršavaju. Stoga korisnici uvijek primaju obične HTML datoteke.

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

Dodavanje komandi serverskoj skripti

Serverska skripta se sastoji od niza instrukcija koje osiguravaju da se komande šalju web serveru jedna po jedna. (Veb programeri su možda upoznati sa skriptama na strani klijenta koje se pokreću u web pretraživaču.) .asp datoteke koriste razgraniče za razdvajanje skripti od tekstualnih podataka i HTML komandi. Separator je znak ili niz znakova koji označavaju 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 . Razgraniči mogu biti bilo koje važeće komande u skript jeziku koji koristite. Ispod je primjer jednostavne HTML stranice sa naredbama skripte.

Ova stranica je zadnji put osvježena.

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

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

Pozivaju se naredbe zatvorene u graničnike glavni timovi scenariji i obrađuju se koristeći osnovni skriptni jezik. Naredba unutar graničnika mora biti važeća naredba u jeziku skriptiranja domaćina. Podrazumevano, primarni skriptni jezik je VBScript; Također možete dodijeliti drugi zadani jezik za skriptiranje. Pogledajte Rad sa skript jezicima.

Programeri skripti na strani klijenta upoznati su sa HTML oznakom, koja se koristi za isticanje komandi i izraza. U skriptama na strani servera, 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 skript jezicima.

Dijeljenje HTML oznake i komande skriptnog jezika

ASP delimiteri mogu sadržavati bilo koju izjavu, izraz, proceduru ili izjavu koja je legalna u jeziku skripti domaćina koji koristite. Ispod instrukcije u VBScript i drugim skript jezicima, sintaksički potpuna konstrukcija koja opisuje jednu vrstu akcije, deklaracije ili definicije se razumije. Primjer najčešće korištene izjave je If...Then...Else izraz:

U zavisnosti od doba dana, string varijabli strGreeting u skripti se dodeljuje vrednost "Dobro jutro!" ("Dobro jutro!") ili "Zdravo!" "Zdravo!". Instrukcija šalje trenutnu vrijednost varijable pretraživaču.

Tako se do 12:00 sati (po lokalnom vremenu) na ekranima korisnika prikazuje sljedeći red:

Dobro jutro!

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

Između različitih dijelova instrukcije može biti HTML teksta. Dakle, rezultat izvršavanja sljedeće skripte s oznakama HTML jezika i naredbom If...Then...Else je isti kao u gornjem primjeru:

Dobro jutro! Zdravo!

Ako je uslov naveden u skripti ispunjen (podne još nije stiglo), web server šalje pregledniku navedenom u uvjetu HTML tekst("Dobro jutro"). U suprotnom, string (“Hello!”) naveden nakon Else se šalje pretraživaču. Ova vrsta alternacije između komandi HTML teksta i skripte često se koristi kada se radi sa naredbom If...Then...Else. Korištenje gore opisanog dizajna je zgodno ako želite da prikažete pozdrav na nekoliko mjesta na web stranici. Vrijednost varijable se postavlja samo jednom, nakon čega se može koristiti više puta.

HTML tekst se također može proslijediti pretraživaču direktno iz skripte, umjesto da se postavlja između različite ekipe. Vraćanje teksta u pretraživač se vrši pomoću ugrađenog ASP Response objekta. Rezultat pokretanja sljedeće skripte je isti kao u prethodnom primjeru:

Komanda Response.Write šalje čitaču tekst koji je prati. Naredbu Response.Write treba koristiti u slučajevima kada tekst vraćen pretraživaču mora biti generisan dinamički. Tako, na primjer, možete kreirati niz od vrijednosti nekoliko varijabli. Da biste saznali više o objektu Response posebno i o objektima općenito, pogledajte Korištenje komponenti i objekata i Slanje sadržaja u web pretraživač. Za sada, samo imajte na umu da se dodavanje komandi skripte na HTML stranicu može obaviti na nekoliko načina.

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

Prilikom kreiranja skripte na JScript jezik blokovi instrukcija mogu biti uključeni direktno u ASP komande kovrčave zagrade. Ove strukture takođe dozvoljavaju prisustvo HTML oznaka i teksta. Primjer.

Ovo je tekstualna verzija stranice. Ovo je multimedijalna verzija stranice.

Rad sa ASP direktivama

ASP obezbeđuje direktive koje nisu deo jezika za skriptovanje koji se koristi: direktivu za izlaz podataka i direktivu za obradu podataka.

U ASP izlazna direktiva omogućava vam da prikažete vrijednost 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 pretraživaču.

Direktiva za obradu omogućava vam da proslijedite podatke ASP-u koji su neophodni za obradu “.asp” datoteke. IN sljedeći primjer prikazuje direktive za VBScript kao glavni skriptni jezik na stranici:

Direktiva obrade mora biti prvi red u datoteci ".asp". Ako stranica treba da sadrži više direktiva, one moraju biti sadržane u istom paru graničnika. Uključivanje direktiva za obradu u datoteku pomoću naredbe #include nije dozvoljeno. (Za više informacija, pogledajte

Sljedeći primjer postavlja jezik skripte i kodnu stranicu:

Prazni prostori u skriptama

Ako je primarni jezik skripte VBScript ili JScript, ASP automatski uklanja razmak koji se može pojaviti u komandama. U slučaju drugih skriptnih jezika, ove praznine su sačuvane. Ovo osigurava da se komande pravilno tumače na jezicima gdje su položaj elementa i uvlačenje bitni. Prazni prostori su razmaci, tabulatori, vraćanja nosioca i prijelomi reda.

VBScript i JScript dozvoljavaju da se ostave razmaci nakon otvaranja i prije zatvaranja graničnika. Ovo čini komande lakšim za čitanje. Dakle, dolje navedena uputstva su tačna:

Razmak između završnog graničnika jednog izraza i graničnika otvaranja drugog automatski se uklanja u ASP-u. Međutim, korištenje razmaka olakšava čitanje. Da biste održali razmak između dva izraza, na primjer kada prikazujete vrijednosti varijabli u iskazu, trebali biste koristiti HTML znak za razmak (). Na primjer:

@foreach (var stavka u redovima) ( // uradi nešto)

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

< ul >@ foreach (var stavku u redovima) ( if (item.Equals(x)) ( // uradi nešto ) )

Osim ako nisu odvojeni od vanjskog izraza ili iskaza neusklađenim oznakama

< ul >@foreach (var stavku u redovima) (< li >@ if (item.Equals(x)) ( // uradi nešto ) )

Znak @ se koristi u Razoru za prikazivanje vrijednosti varijabli, izraza i iskaza u pretraživač:

@DateTime .Sada @(nekiUvjet ? x:y)

Promjenljive unutar izraza i iskaza ne bi trebale imati prefiks sa znakom @.

Ako želite da prikažete običan tekst ili neusklađene oznake dok ste unutar bloka izraza, koristite znak @ praćen dvotočkom da kažete Razoru da ono što slijedi nije C# kod:

@ if (stavka == x) // običan tekst ( @: vrijeme je @ DateTime .Now ) @ if (stavka == x) // neusklađene oznake ( @:< ul >) ostalo ( @:< ol >) Identifikatori

Identifikator u C# je ime dato imenskom prostoru, klasi, varijabli, svojstvu, metodi, interfejsu itd. Pravila regulišu šta čini validan identifikator. Dozvoljeno je koristiti C# ključnu riječ kao identifikator, ali ako to učinite, morate koristiti znak @ da biste spriječili greške u vremenu 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) prihvataju objekat koji predstavlja HTML atribute koji će biti prikazani kao deo oznake koju predstavlja pomoćnik. Sljedeći primjer dodaje atribut stila unosu teksta i postavlja njegovu vrijednost na width:100%; :

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

Kada to učinite, kreirate anonimni tip sa svojstvom zvanim style za predstavljanje HTML atributa. Ako ti želiš da biste postavili atribut CSS klase putem ove metode, morate dodati svojstvo anonimnom tipu koji se zove class - što je C# ključna riječ. Stoga morate koristiti znak @ da omogućite korištenje klase u ovom slučaju:

@Html.TextBoxFor(model => model.FirstName, htmlAttributes: new ( @class = "full-width"))

Greška koju često ponavljam na ASP.NET forumima je primena znaka @ na sva druga svojstva anonimnog tipa, što jednostavno nije neophodno. Neki ljudi čak misle da je znak @ koji se ovdje koristi dio pravila sintakse Razor-a. Nije. Njegova upotreba ovdje je mnogo prethodila Razoru.

Doslovni string literali

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

var s = @"Hello World" ;

Dvije prednosti korištenja doslovnog string literala uključuju činjenicu da trebate samo pobjeći od dvostrukih navodnika (tako što ćete ih udvostručiti); i string može obuhvatiti više redova u kodu bez potrebe za znakovima za nastavak. Iz ovih razloga, doslovni literali stringova su najprikladniji za predstavljanje putanja (koje bi inače trebale izbjegavati njihove kose crte) i obrasce regularnog izraza (koji također mogu zahtijevati izbjegavanje obrnutih kosih crta).

Regex re = novi Regex (@"\w\d(1,3)\.\d(1,3)\.\d(1,3).\d(1,3)\w" );

Oni su također korisni za predstavljanje velikih blokova teksta ako ih treba uključiti u kod na čitljiv način, kao što su SQL izrazi koji 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 ukupni trošak OD detalja narudžbe o INNER JOIN Proizvodi p ON o.ProductID = p.ProductID WHERE o.OrderID = @0" ;

Upotreba znaka @ u ovom kontekstu još jednom nema nikakve veze sa Razor sintaksom.

Sažetak

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

Page class

Sada kada ste videli kakav je životni ciklus stranice i kako stranica sadrži kontrole, pomaže da se istakne da je sama stranica takođe instancirana kao kontrolni objekat. U stvarnosti, svi web obrasci su zapravo instance klase Page iz ASP.NET-a, koja se nalazi u imenskom prostoru System.Web.UI.

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

Mnoga od ovih svojstava odgovaraju internim objektima koji se mogu koristiti na klasičnim ASP.NET web stranicama. Međutim, u klasična verzija ASP je pristupio ovoj funkcionalnosti koristeći ugrađene objekte 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 narednim odjeljcima.

Objekti sesije, aplikacije i predmemorije

Objekt Session je instanca klase System.Web.SessionState.HttpSessionState. Dizajniran je za pohranjivanje bilo koje vrste korisničkih podataka koji moraju 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 se često koristi za održavanje informacija kao što su ime i ID korisnika, korpa za kupovinu ili druge stavke koje se brišu kada korisnik više ne posjećuje stranice web stranice.

Objekt Application je instanca klase System.Web.HttpApplicationState. Kao i objekt Session, on je također rečnik podataka o vrijednosti imena. Međutim, ovi podaci su globalni za cijelu aplikaciju.

U vezi Cache objekat, onda je to instanca klase System.Web.Caching.Cache. Takođe pohranjuje globalne informacije, ali nudi skalabilniji mehanizam skladištenja jer ASP.NET može obrisati objekte ako serveru ponestane memorije. Kao i drugi skupovi stanja, to je u suštini kolekcija objekata nazivne vrijednosti, ali možete postaviti i prilagođene politike isteka i definirati zavisnosti za svaki element.

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

Objekat 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 koji se odnose na URL, kao i sve ostale podatke koje je klijent poslao. Veliki dio informacija koje pruža objekt Request je umotan u apstrakcije koje su više visoki nivo(na primjer, omotač modela ASP.NET Web Control), tako da nije ni približno toliko važan kao što je bio u klasičnom razvoju ASP-a.

Međutim, objekt Request se i dalje može koristiti, na primjer, da se sazna koji preglednik klijent koristi, ili da se kreiraju kolačići i zatim ispita njihov sadržaj.

Tabela ispod navodi neke od najčešće korištenih svojstava objekta Request:

Svojstva objekta HttpRequest Opis nekretnine
AnonymousID Jedinstveno identifikuje 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 "stvarnog" direktorija
Pretraživač Pruža referencu na objekt HttpBrowserCapabilities, koji sadrži svojstva koja opisuju različita funkcionalnost pretraživač, kao što je da li podržava elemente ActiveX kontrole, kolačići, VBScripts i okviri
ClientCertificate Objekt HttpClientCertificate koji daje sigurnosni certifikat za trenutni zahtjev, ako postoji
Kolačići Pruža kolekciju kolačića poslatih s ovim zahtjevom
FilePath i CurrentExecutionFilePath Vrati pravu putanju datoteke (u odnosu na server) za stranicu koja se trenutno izvršava. FilePath predstavlja stranicu koja je započela proces izvršavanja. Ovo je isto kao CurrentExecutionFilePath, osim ako niste premjestili korisnika na novu stranicu bez preusmjeravanja (na primjer, koristeći metodu Server.Transfer()), u kom slučaju CurrentExecutionFilePath odražava novu stranicu, a FilePath specificira originalnu stranicu
Forma Predstavlja kolekciju varijabli obrasca poslanih nazad na stranicu. U većini slučajeva, umjesto da koristite datu kolekciju, ove informacije ćete dohvatiti iz svojstava kontrole
Zaglavlja i serverske varijable Navedite zbirku rječnika HTTP zaglavlja i serverskih varijabli, indeksiranih imenom. Ove kolekcije se uglavnom sastoje od informacija niskog nivoa koje je pregledač poslao zajedno s web zahtjevom (na primjer, informacije o tipu preglednika, funkcionalnosti koju podržava, jezičnim preferencama koje je postavio, identitetima koji se koriste za provjeru autentičnosti podataka, itd.). Obično je ove informacije mnogo lakše dobiti iz drugih svojstava objekta HttpRequest ili ASP.NET klasa višeg nivoa
IsAuthenticated i IsSecureConnection Vratite 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 objekat koji predstavlja adresu trenutne stranice i stranicu sa koje korisnik dolazi (prethodna stranica koja sadrži link do ove stranice)
UserAgent Niz koji predstavlja tip pretraživača. Internet Explorer daje MSIE vrijednost za ovo svojstvo. ASP.NET koristi ove informacije da otkrije o kakvom se tipu pretraživača radi mi pričamo o tome, a samim tim i da odredite koje funkcije ovaj pretraživač treba da podržava (kao što su kolačići, JavaScript, itd.). Ovo zauzvrat može uticati 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 se također može pristupiti kroz kolekciju ServerVariables. Međutim, zbog translacije mrežnih adresa (NAT), to nije uvijek smisleno. Ovisno o tome kako se povezuju na Internet, mnogi klijenti mogu dijeliti istu IP adresu (na primjer, IP adresu računara mrežnog prolaza). Osim toga, IP adresa se također može promijeniti nakon izvršavanja nekoliko zahtjeva.
UserLanguages Pruža sortirani niz stringova koji navodi klijentove jezične postavke. Može biti korisno pri kreiranju višejezičnih stranica
Objekt odgovora

Objekt Response je instanca klase System.Web.HttpResponse i predstavlja odgovor web servera na zahtjev klijenta. U klasičnom ASP razvoju, objekt Response je bio jedini način programsko slanje HTML teksta klijentu.

Serverske kontrole sada sadrže ugniježđene objektno orijentirane metode za prikazivanje. Programer treba samo postaviti vrijednosti svojih svojstava. Dakle, objekat Response nije ni približno tako centralan kao što je nekada bio.

Sljedeća tabela 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 (podrazumevano), stranica se ne šalje klijentu sve dok ne bude prikazana i spremna za slanje u cijelosti, umjesto da se šalje u dijelovima. U nekim specifičnim scenarijima ima smisla postaviti ovo svojstvo na false.
Najočigledniji primjer je kada klijent preuzima veliki fajl. Ako je svojstvo BufferOutput postavljeno na false, klijent će vidjeti dijaloški okvir Save i moći će odabrati ime datoteke prije nego što se datoteka potpuno preuzme
Skladiste Ovo svojstvo se odnosi na objekat HttpCachePolicy, koji vam omogućava da konfigurišete keširanje izlaza
Kolačići Ovo svojstvo omogućava pristup kolekciji kolačića koji se šalju zajedno s odgovorom. Može se koristiti za dodavanje dodatnih kolačića
Ističe i ističe apsolutno Ova svojstva se mogu koristiti za keširanje renderiranog HTML-a stranice, poboljšavajući performanse na sljedećim zahtjevima.
IsClientConnected Ovo je logička vrijednost koja pokazuje da li je klijent povezan sa serverom. Ako već nije povezan, možda ćete morati da zaustavite neku dugotrajnu operaciju
Preusmjeravanje() Ova metoda uzrokuje da pretraživač zatraži drugačiji URL koji upućuje na novu stranicu web aplikacije ili na drugu web stranicu
PreusmjeravanjePermanent() Ova metoda preusmjerava pretraživač na novi URL, slično kao i Redirect() metoda. Razlika je u tome što koristi kod HTTP stanja 301 (što ukazuje da je stranica trajno premještena) umjesto 302 (što ukazuje da je stranica privremeno premještena)
RedirectToRoute() i RedirectToRoutePermanent() Ove metode su slične metodama Redirect() i RedirectPermanent(). Jedina razlika je u tome što koriste rutu (registrirani URL obrazac koji se ne mapira direktno na stranicu)
Transfer() Ova metoda govori ASP.NET-u da zaustavi obradu trenutne stranice i pređe na novu (specificiranu) stranicu web obrasca. U ovom slučaju nije potreban potpuni ciklus slanja i obavještenje pretraživača i korisnika web aplikacije
TransferRequest() Ovaj metod je sličan Transfer(), ali vam omogućava da prebacite korisnika na drugu vrstu stranice. Na primjer, može se koristiti za slanje korisnika iz ASP.NET web obrasca na HTML stranicu.
Kada se koristi, cijeli IIS cevovod se dovodi u akciju za obradu novog resursa, zajedno sa svim povezanim HTTP modulima. Ali postoje brojna značajna ograničenja povezana sa TransferRequest() metodom. Da biste ga koristili, morate ga koristiti IIS web server 7 u integriranom načinu rada. Osim toga, morat ćete otpustiti stanje sesije (ako je stečeno) kako biste spriječili duga kašnjenja
ContentType Ovo svojstvo predstavlja zaglavlje koje govori pretraživaču koju vrstu sadržaja treba da primi. Tipično, ASP.NET Web Forms, kao i sve web stranice, koriste tekst/html sadržaj (tekst pomiješan sa HTML-om). Međutim, u principu bi se mogao kreirati poseban HTTP rukovalac koji služi drugim vrstama sadržaja
OutputStream Ovo svojstvo predstavlja podatke koji se šalju pretraživaču kao tok bajtova niskog nivoa. Može se koristiti za povezivanje sa .NET modelom navoja
Pisati() Ova metoda vam omogućava da pišete tekst direktno u tok odgovora. Obično je bolje koristiti kontrolni model i pustiti kontrole da generiraju vlastite HTML oznake. Ako pokušate da koristite metodu Response.Write() sa kontrolnim modelom, programer gubi mogućnost da odluči gde tekst treba da ide na stranici.
Međutim, metoda Response.Write() je važna u situacijama kada se kontrole koje generiraju vlastitu HTML reprezentaciju moraju izgraditi od nule
BinaryWrite() i WriteFile() Ove metode vam omogućavaju da preuzmete binarni sadržaj iz niza bajtova ili datoteke i zapišete ga direktno u tok odgovora. Koristite ih sa serverskih elemenata kontrole su besmislene, ali mogu biti vrlo korisne kada se kreira prilagođeni HTTP rukovalac.
Na primjer, možete kreirati HTTP rukovalac koji čita podatke za PDF dokument iz unosa baze podataka i upisuje ih direktno u tok odgovora koristeći metodu BinaryWrite(). Na strani klijenta, krajnji rezultat će izgledati potpuno isto kao da je korisnik prenio statičnu PDF datoteku. Kada pišete sadržaj koji nije HTML, obavezno postavite svojstvo ContentType na odgovarajuću vrijednost
Krećite se između stranica

Najvažnija funkcija klase HttpResponse je da obezbijedi mali skup metoda koje vam omogućavaju navigaciju s jedne stranice na drugu. Najuniverzalniji od njih je Redirect() metoda, koja vam omogućava da preusmjerite korisnika na drugu stranicu. Ispod je primjer njegove primjene:

// Preusmjeravanje 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 slanja. U suštini, on šalje poruku pretraživaču koja ga navodi da zatraži novu stranicu.

Metoda Redirect() ima preopterećenje koje uzima logičku vrijednost kao svoj drugi parametar. Ova vrijednost određuje da li kod stranice treba nastaviti s izvršavanjem. Prema zadanim postavkama, iako Redirect() preusmjerava korisnika i zatvara vezu, svaki preostali kod u metodi će se i dalje izvršavati zajedno s ostalim događajima stranice. Ovo omogućava čišćenje ako je potrebno. Ali ako je drugi parametar tačan, ASP.NET će odmah prestati obraditi stranicu, potencijalno smanjujući radno opterećenje web servera.

Ako trebate prenijeti korisnika na drugi web obrazac unutar iste web aplikacije, možete uzeti brži pristup korištenjem metode Server.Transfer(). Međutim, ova metoda ima neke posebnosti. Budući da se preusmeravanje dešava na strani servera, originalni URL ostaje u prozoru klijentovog veb pretraživača. U suštini, pretraživač 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 stranici.

Za prelazak s jedne stranice na drugu, dostupna je još jedna tehnika - objavljivanje na više stranica. Omogućava vam da kreirate stranicu koja se šalje na drugu stranicu, što omogućava da prođete sve informacije o stanju prikaza i sadržaj bilo koje kontrole.

U ASP.NET 4, klasa HttpResponse uvela je još jednu metodu za preusmjeravanje korisnika - RedirectPermanent() . Ova metoda radi istu stvar kao Redirect(), tj. šalje preusmjeravajuću poruku pretraživaču u kojoj se navodi 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 pretraživače ova razlika nije bitna, ali za pretraživače je veoma važna. Kada web pretraživač istražuje web stranicu i primi statusni kod 301, 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. Metodu Redirect() treba koristiti za pružanje normalne navigacije i kontrole toka u aplikaciji (na primjer, kada korisnik prolazi kroz neku vrstu procesa verifikacije), a metodu RedirectPermanent() treba koristiti kada se traži stari URL koji je bio prethodno podržan, ali se više ne koristi.

Obično će metoda Redirect() biti pozvana negdje u kodu web obrasca, dok će RedirectPermanent() metoda biti pozvana u kodu aplikacije, tačnije u metodi Application_BeginRequest() unutar datoteke global.asax. Ovo će vam omogućiti da upravljate svim svojim upornim preusmjeravanjem na jednom mjestu bez potrebe da čuvate zaglavlje za stare stranice. Ispod je primjer:

Zaštićeni 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.) )

Objekat servera

Objekat Server je instanca klase System.Web.HttpServerUtility i pruža razne pomoćne metode i svojstva koja su navedena u tabeli:

Članovi klase HttpServerUtility Opis metode ili svojstva
MachineName Svojstvo koje predstavlja ime računara na kojem je stranica pokrenuta. Ovo je naziv web servera koji koristi računar da ga identifikuje na ostatku mreže
GetLastError() Dohvaća objekt izuzetka za najnoviju grešku (ili nultu referencu ako ona ne postoji). Ova greška se trebala dogoditi tokom obrade trenutnog zahtjeva i nije obrađena. Najčešće se koristi u aplikaciji za rukovanje događajima koji provjerava situacije kvara
HtmlEncode() i HtmlDecode() Zamjenjuje normalni niz važećim stringom HTML znakovi(i obrnuto)
UrlEncode() i UrlDecode() Zamjenjuje običan niz nizom važećih URL znakova (i obrnuto)
MapPath() Vraća fizičku putanju do datoteke koja odgovara određenom virtuelni put u datoteku na web serveru. Pozivanje MapPath() sa / vraća fizičku putanju 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)
Transfer() Prenosi izvršenje na drugu web stranicu u trenutnu aplikaciju. Ova metoda je slična Response.Redirect(), ali je brža. Ne može se koristiti za premještanje korisnika na stranicu koja se nalazi na drugom web serveru 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, ne dolazi do potpunog ciklusa slanja. Umjesto toga, ASP.NET motor jednostavno učitava novu stranicu i počinje je obraditi. Kao rezultat toga, URL prikazan u pretraživaču klijenta se ne mijenja.

MapPath() je još jedna korisna metoda serverskog objekta. Na primjer, pretpostavimo da želite učitati datoteku pod nazivom info.txt iz trenutnog virtualnog direktorija. Umjesto tvrdog kodiranja putanje, možete koristiti metodu Server.MapPath() i koristiti je za pretvaranje relativni put do vaše web aplikacije punim fizičkim putem.

HTML i URL kodiranje

Klasa Server takođe sadrži metode koje pretvaraju regularne stringove u reprezentaciju koja se može bezbedno koristiti kao deo URL-a ili prikazati na veb stranici. Na primjer, recimo da ćete prikazati sljedeći tekst na web stranici:

Tag

Koristi se za označavanje paragrafa.

Ako pokušate da napišete ove informacije na stranici ili ih stavite u kontrolu, dobit ćete sljedeće:

Oznaka se koristi za identifikaciju pasusa.

Tekst

Neće se pojaviti, a pretraživač ga tumači kao da sadrži paragraf. 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 ovu temu