Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Recenzii
  • Partajarea etichetelor HTML și a comenzilor din limbajul de scriptare. Adăugarea de comenzi la un script de server

Partajarea etichetelor HTML și a comenzilor din limbajul de scriptare. Adăugarea de comenzi la un script de server

Fișier activ Server Pages (ASP) este un fișier text cu extensia „.asp”. Acest fișier poate conține:

Pentru creație rapidă Fișierul „.asp”, doar redenumiți fișierul HTML schimbând extensia „.htm” sau „.html” în „.asp”. Dacă fișierul nu conține funcții ASP, serverul pur și simplu trimite eficient fișierul către computerul utilizatorului. Această caracteristică oferă confort suplimentar pentru dezvoltatorii web, care pot acorda fișierelor extensia „.asp”, chiar dacă nu intenționează să includă ulterior caracteristici ASP.

Pentru a publica fișierul .asp nou creat pe Internet, trebuie să îl salvați într-un director virtual de pe site-ul dvs. Web (care trebuie să aibă permisiuni Script sau Run). După aceasta, puteți accesa acest fișier într-o solicitare, specificând fișierul corespunzător în browser. adresa URL. (Un lucru de reținut este că, deoarece paginile ASP trebuie redate pe server, introducerea căii fizice către fișierul „.asp” în în acest caz, invalid.) Fișierul trimis de server atunci când este vizualizat într-un browser este o pagină HTML. Acest lucru are un anumit sens, deoarece înainte de a trimite fișierul, serverul îl rulează analizareși toate scripturile de server ASP sunt executate. Prin urmare, utilizatorii primesc întotdeauna fișiere HTML obișnuite.

Fișierele „.asp” pot fi create în orice editor de text. Pe măsură ce câștigați experiență, s-ar putea să vă fie mai convenabil să lucrați redactor special care include suport suplimentar ASP, cum ar fi Microsoft® Visual InterDev™. ( Informații suplimentare vezi site-ul web Microsoft Visual InterDev la http://msdn.microsoft.com/vinterdev/.)

Adăugarea de comenzi la un script de server

Scriptul de server constă dintr-o secvență de instrucțiuni care asigură că comenzile sunt trimise către serverul web una câte una. (Dezvoltatorii web pot fi familiarizați cu scripturile de pe partea client care rulează într-un browser web.) Fișierele .asp folosesc delimitatori pentru a separa scripturile de datele text și comenzile HTML. Separator este un caracter sau o secvență de caractere care indică începutul sau sfârșitul unei secțiuni. Limbajul HTML folosește simboluri () ca astfel de delimitatori, între care se află etichetele HTML.

În ASP, comenzile de script sunt incluse în . Delimitatorii pot fi orice comenzi valide în limbajul de scripting pe care îl utilizați. Mai jos este un exemplu de pagină HTML simplă cu comenzi de script.

Această pagină a fost actualizată ultima dată.

Funcția VBScript Now() returnează data și ora curente. Când această pagină este procesată, browserul web va înlocui data și ora curentă și va returna pagina în browser cu următorul rezultat:

Această pagină a fost actualizată ultima dată la 29/01/99 14:20:00.

Comenzile incluse în delimitatori sunt apelate echipele principale scenariiși sunt procesate folosind limbajul de scripting de bază. Comanda din interiorul delimitatorilor trebuie să fie o comandă validă în limbajul de scripting gazdă. În mod implicit, limbajul de scripting principal este VBScript; De asemenea, puteți aloca un alt limbaj de scripting implicit. Consultați Lucrul cu limbaje de scripting.

Dezvoltatorii de scripturi din partea clientului sunt familiarizați cu eticheta HTML, care este folosită pentru a evidenția comenzile și expresiile. În scripturile de pe partea serverului, eticheta poate fi utilizată pentru a defini proceduri în mai multe limbi conținute într-un singur fișier „.asp”. Pentru mai multe informații despre acest subiect, consultați Lucrul cu limbaje de scripting.

Partajarea Etichete HTMLși comenzile limbajului de scripting

Delimitatorii ASP pot conține orice declarație, expresie, procedură sau declarație legală în limbajul de scripting gazdă pe care îl utilizați. Sub instrucțiuniîn VBScript și alte limbaje de scripting, se înțelege un construct complet sintactic care descrie un tip de acțiune, declarație sau definiție. Un exemplu de declarație folosită în mod obișnuit este instrucțiunea If...Then...Else:

În funcție de ora din zi, variabilei șir strGreeting din script i se atribuie valoarea „Bună dimineața!” („Bună dimineața!”) sau „Bună ziua!” "Buna ziua!". Instrucțiunea trimite valoarea curentă a variabilei către browser.

Astfel, până la ora 12:00 (ora locală), pe ecranele utilizatorilor este afișată următoarea linie:

Buna dimineata!

După ora 12:00, utilizatorii vor vedea următorul mesaj:

Poate exista text HTML între diferitele părți ale instrucțiunii. Astfel, rezultatul executării următorului script cu etichete în limbaj HTML și o instrucțiune If...Then...Else este același ca în exemplul de mai sus:

Buna dimineata! Buna ziua!

Dacă condiția specificată în script este îndeplinită (amiaza nu a sosit încă), serverul web trimite către browserul specificat în condiție text HTML("Buna dimineata"). În caz contrar, șirul („Bună ziua!”) specificat după Else este trimis către browser. Acest tip de alternanță între textul HTML și comenzile de script este adesea folosit când se lucrează cu instrucțiunea If...Then...Else. Utilizarea designului discutat mai sus este convenabilă dacă doriți să afișați un salut în mai multe locuri pe o pagină web. Valoarea unei variabile este setată o singură dată, după care poate fi folosită de mai multe ori.

Textul HTML poate fi, de asemenea, transmis în browser direct dintr-o comandă de script, în loc să fie plasat între ele echipe diferite. Returnarea textului în browser se face prin obiectul ASP Response încorporat. Rezultatul rulării următorului script este același ca în exemplul anterior:

Comanda Response.Write trimite textul care îl urmează către browser. Declarația Response.Write trebuie utilizată în cazurile în care textul returnat în browser trebuie generat dinamic. Astfel, de exemplu, puteți crea un șir din valorile mai multor variabile. Pentru a afla mai multe despre obiectul Response în special și despre obiecte în general, consultați Utilizarea componentelor și obiectelor și trimiterea conținutului către browserul web. Deocamdată, rețineți că adăugarea de comenzi de script la o pagină HTML se poate face în mai multe moduri.

Este acceptabil să se includă proceduri scrise în limbajul de scriptare de bază folosind delimitatori ASP. Pentru mai multe informații, consultați Lucrul cu limbaje de scripting.

Când creați un script pe Limbajul JScript blocurile de instrucțiuni pot fi incluse direct în comenzile ASP acolade. Aceste structuri permit, de asemenea, prezența etichetelor HTML și a textului. Exemplu.

Aceasta este versiunea text a unei pagini. Aceasta este versiunea multimedia a unei pagini.

Lucrul cu directivele ASP

ASP furnizează directive care nu fac parte din limbajul de scripting utilizat: o directivă pentru ieșirea datelor și o directivă pentru prelucrarea datelor.

În ASP directivă de ieșire vă permite să afișați valoarea unei expresii pe ecran. Această directivă de ieșire este echivalentă cu comanda Response.Write. De exemplu, o expresie poate fi folosită pentru a afișa cuvântul Baltimore (valoarea curentă a unei variabile) în browser.

Directiva de prelucrare vă permite să transmiteți date către ASP necesare procesării fișierului „.asp”. ÎN exemplul următor afișează directivele pentru VBScript ca limbaj de scripting principal pe pagină:

Directiva de procesare trebuie să fie prima linie din fișierul „.asp”. Dacă o pagină trebuie să conțină mai multe directive, acestea trebuie să fie cuprinse în aceeași pereche de delimitatori. Includerea directivelor de procesare într-un fișier folosind instrucțiunea #include nu este permisă. (Pentru mai multe informații, vezi

Următorul exemplu setează limbajul de script și pagina de cod:

Spații goale în scripturi

Dacă limbajul principal al scriptului este VBScript sau JScript, ASP elimină automat spațiile albe care pot apărea în comenzi. În cazul altor limbaje de scripting, aceste lacune sunt păstrate. Acest lucru asigură că comenzile sunt interpretate corect în limbi în care plasarea elementelor și indentarea contează. Spatii libere sunt spații, file, întoarceri de cărucior și întreruperi de linie.

VBScript și JScript permit lăsarea spațiilor după delimitatorul de deschidere și înainte de delimitătorul de închidere. Acest lucru face comenzile mai ușor de citit. Deci, instrucțiunile enumerate mai jos sunt corecte:

Spațiul dintre delimitatorul de închidere al unei instrucțiuni și delimitatorul de deschidere al alteia este eliminat automat în ASP. Cu toate acestea, utilizarea spațiilor facilitează citirea. Pentru a menține spațiul între două instrucțiuni, de exemplu atunci când se afișează valorile variabilelor într-o instrucțiune, ar trebui să utilizați caracterul HTML care nu se întrerupe spațiu (). De exemplu:

@foreach (var element în rânduri) ( // face ceva )

Expresiile sau declarațiile imbricate nu încep cu semnul @...

< ul >@ foreach (var element în rânduri) ( if (item.Equals(x)) ( // face ceva ) )

Cu excepția cazului în care sunt separate de expresia sau declarația exterioară prin etichete nepotrivite

< ul >@foreach (var element în rânduri) (< li >@ if (item.Equals(x)) ( // face ceva ) )

Semnul @ este folosit în Razor pentru a reda valoarea variabilelor, expresiilor și declarațiilor către browser:

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

Variabilele din expresii și instrucțiuni nu trebuie să aibă prefixele semnului @.

Dacă doriți să redați text simplu sau etichete nepotrivite în interiorul unui bloc de instrucțiuni, utilizați semnul @ urmat de două puncte pentru a-i spune lui Razor că ceea ce urmează nu este cod C#:

@ if (element == x) // text simplu ( @: Ora este @ DateTime .Now ) @ if (element == x) // etichete nepotrivite ( @:< ul >) altfel ( @:< ol >) Identificatori

Un identificator în C# este numele dat unui spațiu de nume, clasă, variabilă, proprietate, metodă, interfață etc. Regulile guvernează ceea ce face un identificator valid. Este permis să utilizați un cuvânt cheie C# ca identificator, dar dacă o faceți, trebuie să utilizați semnul @ pentru a preveni erorile de timp de compilare. Vi se recomandă să nu utilizați un cuvânt cheie ca identificator, dar există momente când nu puteți evita să faceți acest lucru.

Unele supraîncărcări ale claselor HtmlHelper (Pagini Web și MVC) acceptă un obiect pentru a reprezenta atributele HTML care urmează să fie redate ca parte a etichetei pe care o reprezintă ajutorul. Următorul exemplu adaugă un atribut de stil la o intrare de text și setează valoarea acestuia la width:100%; :

@Html.TextBoxFor(model => nou (stil = "lățime:100%;" ))

Când faceți acest lucru, creați un tip anonim cu o proprietate numită stil pentru a reprezenta atributele HTML. Dacă tu vrei pentru a seta atributul clasei CSS prin această metodă, trebuie să adăugați o proprietate la tipul anonim numit class - care este un cuvânt cheie C#. Prin urmare, trebuie să utilizați semnul @ pentru a activa utilizarea clasei în acest caz:

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

O greșeală pe care o văd repetată destul de des pe forumurile ASP.NET este aplicarea semnului @ tuturor celorlalte proprietăți de tip anonim, ceea ce pur și simplu nu este necesar. Unii oameni chiar cred că semnul @ folosit aici face parte din regulile de sintaxă Razor. Nu este. Utilizarea sa aici a precedat Razor cu mult.

Literale șiruri literale

Un șir literal literal în C# constă din semnul @ urmat de un șir literal între ghilimele duble și terminat cu punct și virgulă, de ex.

var s = @"Bună lume" ;

Două avantaje ale utilizării unui șir literal literal includ faptul că trebuie să scăpați doar de ghilimele duble (dublandu-le); sișirul poate cuprinde mai multe linii în cod fără a necesita caractere de continuare. Din aceste motive, literalele șiruri textuale sunt cele mai potrivite pentru reprezentarea căilor (care altfel ar putea avea nevoie de evadarea barelor oblice) și a modelelor de expresie regulată (care, de asemenea, pot necesita evadarea barelor oblice inverse).

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

Ele sunt, de asemenea, utile pentru a reprezenta blocuri mari de text dacă trebuie incluse în cod într-o manieră lizibilă, cum ar fi instrucțiunile SQL care ar putea fi utilizate în aplicațiile de pagini web:

var sql = @"SELECT p.ProductName, o.UnitPrice, o.Quantity, (o.UnitPrice * o.Quantity) - (o.UnitPrice * o.Quantity * o.Discount) Ca TotalCost FROM OrderDetails o INNER JOIN Produse p ON o.ProductID = p.ProductID WHERE o.OrderID = @0" ;

Utilizarea semnului @ în acest context nu are nimic de-a face cu sintaxa Razor.

rezumat

Dacă v-ați întrebat vreodată când și unde ar trebui să utilizați semnul @ în codul dvs. ASP.NET, sperăm că acest articol v-a ajutat să vă rezolvați confuzia.

Clasa de pagină

Acum că ați văzut care este ciclul de viață al unei pagini și cum o pagină conține controale, vă ajută să subliniați că pagina în sine este, de asemenea, instanțiată ca obiect de control. În realitate, toate formularele web sunt de fapt instanțe ale clasei Page din ASP.NET, care se află în spațiul de nume System.Web.UI.

Probabil că ați ghicit deja acest lucru observând că fiecare clasă de cod din spatele moștenește în mod clar de la System.Web.UI.Page. Aceasta înseamnă că fiecare formular web pe care îl creați câștigă imediat o cantitate uriașă de funcționalități, cum ar fi metoda FindControl() văzută anterior și proprietatea IsPostBack. În plus, moștenirea de la Page oferă codului tău acces la următoarele proprietăți extrem de utile:

Multe dintre aceste proprietăți corespund obiectelor interne care ar putea fi utilizate în paginile web ASP.NET clasice. Cu toate acestea, în varianta clasica ASP a accesat această funcționalitate folosind obiecte încorporate care erau întotdeauna disponibile. În ASP.NET, fiecare dintre aceste obiecte încorporate corespunde de fapt unei proprietăți Page, care oferă o instanță a unei clase complet funcționale.

Aceste obiecte sunt descrise mai detaliat în secțiunile următoare.

Obiecte de sesiune, aplicație și cache

Obiectul Session este o instanță a clasei System.Web.SessionState.HttpSessionState. Este conceput pentru a stoca orice tip de date de utilizator care trebuie să persistă între solicitările paginilor web. Obiectul Session oferă acces în dicționar la un set de perechi nume-valoare reprezentând datele utilizatorului pentru acea sesiune. Starea sesiunii este adesea folosită pentru a păstra informații precum numele și ID-ul unui utilizator, coșul de cumpărături sau alte articole care sunt șterse atunci când utilizatorul nu mai vizitează paginile site-ului web.

Obiectul Aplicație este o instanță a clasei System.Web.HttpApplicationState. La fel ca obiectul Session, este și un dicționar de date nume-valoare. Cu toate acestea, aceste date sunt globale pentru întreaga aplicație.

Cu privire la Cache obiect, atunci este o instanță a clasei Sistem.Web.Caching.Cache. De asemenea, stochează informații globale, dar oferă un mecanism de stocare mai scalabil, deoarece ASP.NET poate șterge obiecte dacă serverul rămâne fără memorie. Ca și alte seturi de stări, este în esență o colecție de obiecte nume-valoare, dar puteți, de asemenea, să setați politici de expirare personalizate și să definiți dependențe pentru fiecare element.

Alegerea modului de implementare a managementului de stat este una dintre sarcini cheie dezvoltare de aplicatii web.

Solicitare obiect

Obiectul Request este o instanță a clasei System.Web.HttpRequest. Acest obiect reprezintă valorile și proprietățile cererii HTTP care au dus la încărcarea paginii. Conține toți parametrii privind URL-ul, precum și toate celelalte date care au fost trimise de client. O mare parte din informațiile furnizate de obiectul Request sunt împachetate în abstracții care sunt mai multe nivel inalt(de exemplu, Wrapper-ul ASP.NET Web Control Model), deci nu este atât de important ca în dezvoltarea ASP clasică.

Cu toate acestea, obiectul Request poate fi folosit în continuare, de exemplu, pentru a afla ce browser folosește clientul sau pentru a crea module cookie și apoi a examina conținutul acestora.

Tabelul de mai jos listează unele dintre cele mai frecvent utilizate proprietăți ale obiectului Request:

Proprietățile obiectului HttpRequest Descrierea proprietății
ID anonim Identifică unic utilizator curent, dacă accesul anonim a fost activat.
ApplicationPath și PhysicalApplicationPath ApplicationPath preia informații despre locația directorului virtual (URL) al unei aplicații ASP.NET, iar PhysicalPath preia informații despre locația directorului său „real”
Browser Oferă o referință la un obiect HttpBrowserCapabilities, care conține proprietăți care descriu diverse funcţionalitate browser, cum ar fi dacă acceptă elemente controale ActiveX, cookie-uri, VBScript-uri și cadre
ClientCertificate Un obiect HttpClientCertificate care furnizează certificatul de securitate pentru cererea curentă, dacă există unul
Cookie-uri Oferă o colecție de cookie-uri trimise cu această solicitare
FilePath și CurrentExecutionFilePath Returnează calea reală a fișierului (relativă la server) pentru pagina în execuție curentă. FilePath reprezintă pagina care a început procesul de execuție. Acesta este același cu CurrentExecutionFilePath, cu excepția cazului în care ați mutat utilizatorul pe o pagină nouă fără redirecționare (de exemplu, folosind metoda Server.Transfer()), caz în care CurrentExecutionFilePath reflectă pagina nouă, iar FilePath specifică pagina originală
Formă Reprezintă o colecție de variabile de formular trimise înapoi la pagină. În cele mai multe cazuri, în loc să utilizați o anumită colecție, veți prelua aceste informații din proprietățile controlului
Anteturi și ServerVariables Furnizați o colecție de dicționar de anteturi HTTP și variabile de server, indexate după nume. Aceste colecții constau în mare parte din informații de nivel scăzut care au fost trimise de browser împreună cu solicitarea web (de exemplu, informații despre tipul de browser, funcționalitatea pe care o acceptă, preferințele de limbă pe care le-a stabilit, identitățile utilizate pentru autentificarea datelor, etc.). De obicei, aceste informații sunt mult mai ușor de obținut din alte proprietăți ale obiectului HttpRequest sau claselor ASP.NET de nivel superior
IsAuthenticated și IsSecureConnection Returnează true dacă utilizatorul este autentificat cu succes și utilizatorul este conectat prin protocolul Secure Sockets Layer (SSL).
IsLocal Returnează true dacă utilizatorul solicită pagina de la computerul local
Șir de interogare Furnizează parametrii trecuți în șirul de interogare
Url și UrlReferrer Returnează un obiect Uri reprezentând adresa paginii curente și pagina de la care provine utilizatorul (pagina anterioară care conține un link către această pagină)
Agent utilizator Un șir care reprezintă tipul de browser. Internet Explorer furnizează valoarea MSIE pentru această proprietate. ASP.NET folosește aceste informații pentru a afla ce tip de browser este despre care vorbim, și, prin urmare, pentru a determina ce funcționalitate ar trebui să accepte acest browser (cum ar fi cookie-uri, JavaScript etc.). Acest lucru, la rândul său, poate afecta modul în care sunt redate controalele web.
UserHostAddress și UserHostName Preia informații despre adresa IP și numele DNS client la distanță. Aceste informații pot fi accesate și prin colecția ServerVariables. Cu toate acestea, datorită traducerii adresei de rețea (NAT), nu este întotdeauna semnificativă. În funcție de modul în care se conectează la Internet, mulți clienți pot împărtăși aceeași adresă IP (de exemplu, adresa IP a computerului gateway). În plus, adresa IP se poate modifica și după efectuarea mai multor solicitări.
Limbi utilizatorilor Oferă o matrice de șiruri sortate care listează preferințele de limbă ale clientului. Poate fi util la crearea paginilor multilingve
Obiect de răspuns

Obiectul Response este o instanță a clasei System.Web.HttpResponse și reprezintă răspunsul serverului web la o solicitare a clientului. În dezvoltarea ASP clasică, obiectul Response era singura cale trimiterea programatică de text HTML către client.

Controalele serverului conțin acum metode imbricate orientate pe obiecte pentru a se reda. Dezvoltatorul trebuie doar să stabilească valorile proprietăților lor. Deci obiectul Response nu este nici pe departe la fel de central ca odinioară.

Următorul tabel listează câțiva dintre cei mai des utilizați membri ai clasei HttpResponse:

Membrii clasei HttpResponse Metodă sau proprietate Descriere
BufferOutput Când această proprietate este setată la true (implicit), pagina nu este trimisă clientului până când este redată și gata să fie trimisă în întregime, mai degrabă decât să fie trimisă în bucăți. În unele scenarii specifice, este logic să setați această proprietate la false.
Cel mai evident exemplu este atunci când un client descarcă dosar mare. Dacă proprietatea BufferOutput este setată la false, clientul va vedea o casetă de dialog Salvare și va putea selecta un nume de fișier înainte ca fișierul să fie descărcat complet
Cache Această proprietate se referă la obiectul HttpCachePolicy, care vă permite să configurați stocarea în cache a ieșirii
Cookie-uri Această proprietate oferă acces la colecția de cookie-uri care sunt trimise împreună cu răspunsul. Poate fi folosit pentru a adăuga cookie-uri suplimentare
Expiră și Expiră Absolut Aceste proprietăți pot fi folosite pentru a stoca în cache HTML-ul redat al unei pagini, îmbunătățind performanța la solicitările ulterioare.
IsClientConnected Aceasta este o valoare booleană care indică dacă clientul este conectat la server. Dacă nu este deja conectat, poate fi necesar să opriți o operațiune de lungă durată
Redirecţiona() Această metodă face ca browserul să solicite o adresă URL diferită care indică către o nouă pagină de aplicație web sau către un alt site web
RedirectPermanent() Această metodă redirecționează browserul către noua adresă URL, la fel ca metoda Redirect(). Diferența este că folosește codul stări HTTP 301 (care indică faptul că pagina a fost mutată permanent) și nu 302 (care indică faptul că pagina a fost mutată temporar)
RedirectToRoute() și RedirectToRoutePermanent() Aceste metode sunt similare cu metodele Redirect() și RedirectPermanent(). Singura diferență este că folosesc o rută (un model URL înregistrat care nu se mapează direct la pagină)
Transfer() Această metodă îi spune ASP.NET să oprească procesarea paginii curente și să treacă la o nouă pagină de formular web (specificată). În acest caz, ciclul complet de trimitere și notificarea browserului și a utilizatorului aplicației web nu sunt necesare
Cerere de transfer() Această metodă este similară cu Transfer(), dar vă permite să transferați utilizatorul pe un alt tip de pagină. De exemplu, poate fi folosit pentru a trimite un utilizator dintr-un formular web ASP.NET către o pagină HTML.
Când este utilizat, întreaga conductă IIS este adusă în acțiune pentru a procesa noua resursă, împreună cu toate modulele HTTP asociate. Dar există o serie de limitări semnificative asociate cu metoda TransferRequest(). Pentru a-l folosi trebuie folosit Server web IIS 7 în modul integrat. În plus, va trebui să eliberați starea sesiunii (dacă a fost achiziționată) pentru a preveni întârzierile mari
Tipul de conținut Această proprietate reprezintă un antet care spune browserului ce tip de conținut ar trebui să primească. De obicei, formularele web ASP.NET, ca toate paginile web, utilizează conținut text/html (text amestecat cu HTML). Cu toate acestea, în principiu, un handler HTTP special ar putea fi creat pentru a servi alte tipuri de conținut
OutputStream Această proprietate reprezintă datele trimise către browser ca flux de octeți de nivel scăzut. Poate fi folosit pentru conectarea la modelul de threading .NET
Scrie() Această metodă vă permite să scrieți text direct în fluxul de răspuns. De obicei, este mai bine să folosiți un model de control și să lăsați controalele să genereze propriul lor marcaj HTML. Dacă încercați să utilizați metoda Response.Write() cu un model de control, dezvoltatorul își pierde capacitatea de a decide unde ar trebui să meargă textul pe pagină.
Cu toate acestea, metoda Response.Write() este importantă în situațiile în care controalele care generează propria lor reprezentare HTML trebuie construite de la zero
BinaryWrite() și WriteFile() Aceste metode vă permit să luați conținut binar dintr-o matrice de octeți sau dintr-un fișier și să îl scrieți direct în fluxul de răspuns. Folosește-le cu elemente de server controalele sunt lipsite de sens, dar pot fi foarte utile atunci când se creează un handler HTTP personalizat.
De exemplu, puteți crea un handler HTTP care citește datele pentru un document PDF dintr-o intrare în baza de date și le scrie direct în fluxul de răspuns folosind metoda BinaryWrite(). Pe partea clientului, rezultatul final va arăta exact la fel ca și cum utilizatorul ar fi încărcat un fișier PDF static. Când scrieți conținut non-HTML, asigurați-vă că setați proprietatea ContentType la valoarea corespunzătoare
Deplasați-vă între pagini

Cea mai importantă funcție a clasei HttpResponse este de a oferi un set mic de metode care vă permit să navigați de la o pagină la alta. Cea mai universală dintre ele este metoda Redirect(), care vă permite să redirecționați utilizatorul către o altă pagină. Mai jos este un exemplu de aplicare a acestuia:

// Redirecționează către un fișier din directorul curent. Response.Redirect("PageFlow.aspx"); // Redirecționează către un alt site web. Response.Redirect ("http://www.google.com");

Metoda Redirect() necesită un ciclu complet de expediere. În esență, trimite un mesaj browserului care îl face să solicite o nouă pagină.

Metoda Redirect() are o supraîncărcare care ia o valoare booleană ca al doilea parametru. Această valoare specifică dacă codul paginii trebuie să continue executarea. În mod implicit, chiar dacă Redirect() redirecționează utilizatorul și închide conexiunea, orice cod rămas în metodă va fi în continuare executat împreună cu restul evenimentelor paginii. Acest lucru permite curățarea dacă este necesar. Dar dacă cel de-al doilea parametru este adevărat, ASP.NET va opri imediat procesarea paginii, reducând potențial volumul de lucru al serverului web.

Dacă trebuie să transferați utilizatorul într-un alt formular web în cadrul aceleiași aplicații web, puteți adopta o abordare mai rapidă folosind metoda Server.Transfer(). Cu toate acestea, această metodă are unele particularități. Deoarece redirecționarea are loc pe partea serverului, URL-ul original rămâne în fereastra browserului web a clientului. În esență, browserul nu are de unde să știe că de fapt afișează o altă pagină. Această limitare provoacă probleme atunci când clientul reîmprospătează sau marchează pagina.

În plus, metoda Server.Transfer() nu poate transfera controlul către o pagină non-ASP.NET sau o pagină web situată într-o altă aplicație web sau site web.

Pentru a trece de la o pagină la alta, este disponibilă o altă tehnică - postarea încrucișată. Vă permite să creați o pagină care se trimite pe o altă pagină, făcând posibilă transmiterea tuturor informațiilor despre starea vizualizării și conținutul oricăror comenzi.

În ASP.NET 4, clasa HttpResponse a introdus o altă metodă de redirecționare a utilizatorului - RedirectPermanent() . Această metodă face același lucru ca Redirect(), adică. trimite un mesaj de redirecționare către browser care indică faptul că ar trebui să solicite o nouă pagină. Cu toate acestea, în loc de codul de stare HTTP 302 (redirecționare temporară), folosește codul 301 (care indică o redirecționare permanentă). Pentru browserele web această diferență nu contează, dar pentru motoarele de căutare este foarte importantă. Când un crawler web explorează un site web și primește un cod de stare 301, actualizează directorul cu motor de căutare, completându-l cu informații despre noua adresă URL.

Aceasta înseamnă că metodele Redirect() și RedirectPermanent() trebuie utilizate în moduri foarte diferite. Metoda Redirect() ar trebui să fie utilizată pentru a oferi navigare normală și control al fluxului în aplicație (de exemplu, atunci când utilizatorul trece printr-un fel de proces de verificare), iar metoda RedirectPermanent() ar trebui să fie utilizată atunci când se solicită o adresă URL veche care a fost acceptat anterior, dar nu mai este utilizat.

De obicei, metoda Redirect() va fi apelată undeva în codul formularului web, în ​​timp ce metoda RedirectPermanent() va fi apelată în codul aplicației, mai precis în metoda Application_BeginRequest() din fișierul global.asax. Acest lucru vă va permite să gestionați toate redirecționările persistente într-un singur loc, fără a fi nevoie să păstrați stub-uri pentru paginile vechi. Mai jos este un exemplu:

Protected void Application_BeginRequest(object sender, EventArgs e) ( // Aplicația web nu mai conține pagina about.aspx dacă (Reguest.FilePath == "/about.aspx") ( Response.RedirectPermanent("/about/about-Us) .aspx"); ) // (Adăugați aici redirecționări suplimentare.) )

Obiect server

Obiectul Server este o instanță a clasei System.Web.HttpServerUtility și oferă o varietate de metode și proprietăți de ajutor, care sunt enumerate în tabel:

Membrii clasei HttpServerUtility Metodă sau proprietate Descriere
MachineName O proprietate care reprezintă numele computerului pe care rulează pagina. Acesta este numele serverului web folosit de computer pentru a-l identifica cu restul rețelei
GetLastError() Preia obiectul excepție pentru cea mai recentă eroare (sau o referință nulă dacă nu există). Această eroare ar fi trebuit să apară în timpul procesării cererii curente și nu a fost gestionată. Cel mai adesea folosit într-un handler de evenimente de aplicație care verifică situațiile de eșec
HtmlEncode() și HtmlDecode() Înlocuiește un șir normal cu un șir valid caractere HTML(si invers)
UrlEncode() și UrlDecode() Înlocuiește un șir obișnuit cu un șir de caractere URL valide (și invers)
MapPath() Returnează calea fizică către un fișier corespunzător unui anumit cale virtualăîntr-un fișier de pe serverul web. Apelarea MapPath() cu / returnează calea fizică către directorul rădăcină al aplicației web. De asemenea, acceptă căi care conțin un caracter tilde (~) care reprezintă directorul rădăcină al unui site web (de exemplu, ~/homepage.aspx)
Transfer() Transferă execuția pe o altă pagină web în aplicatia curenta. Această metodă este similară cu Response.Redirect(), dar este mai rapidă. Nu poate fi folosit pentru a muta utilizatorul pe un site situat pe un alt server web sau pe o pagină non-ASP.NET (cum ar fi HTML sau ASP)

Metoda Transfer() este cea mai bună într-un mod rapid mutarea utilizatorului pe o altă pagină a aplicației. Când utilizați această metodă, nu are loc un ciclu complet de trimitere. În schimb, motorul ASP.NET încarcă pur și simplu o pagină nouă și începe să o proceseze. Drept urmare, adresa URL afișată în browserul clientului nu se modifică.

MapPath() este o altă metodă utilă a obiectului Server. De exemplu, să presupunem că doriți să încărcați un fișier numit info.txt din directorul virtual curent. În loc să codificați calea, puteți utiliza metoda Server.MapPath() și o puteți utiliza pentru a converti cale relativă la aplicația dvs. web pe calea fizică completă.

Codificare HTML și URL

Clasa Server conține, de asemenea, metode care convertesc șirurile obișnuite într-o reprezentare care poate fi utilizată în siguranță ca parte a unui URL sau afișată pe o pagină web. De exemplu, să presupunem că veți afișa următorul text pe o pagină web:

Etichetă

Folosit pentru a indica un paragraf.

Dacă încercați să scrieți aceste informații pe o pagină sau să o plasați într-un control, veți obține următoarele:

O etichetă este folosită pentru a identifica un paragraf.

Text

Nu va apărea, iar browserul îl interpretează ca incluzând un paragraf. Pentru a evita acest comportament automat, va trebui să convertiți valorile potențiale problematice în echivalente HTML speciale. De exemplu,< превратится в < в окончательной HTML-странице, а браузер отобразит этот символ как

Cele mai bune articole pe această temă