În loc de groază și de neînțelegeri, există dorința de a înțelege cum să eliminați ViewState sau cel puțin să reduceți cantitatea de informații stocate în ea?
Din păcate, conținutul paginilor Asp.Net nu poate fi format manual. Și acest lucru provoacă multă indignare printre unii dezvoltatori. De exemplu, în același programator PHP formează complet conținutul paginii, controlând fiecare caracter. Apropo, în Asp.Net MVC, o asemenea rușine, cum este ViewState, nu mai există.
Să ne dăm seama de ce aveți nevoie de ViewState și ce este stocat în el? Să mergem!
ViewState stochează date despre toate controalele serverului. Toate proprietățile de control care runat = "server" sunt stocate acolo;
ViewState monitorizează starea componentelor serverului;
Când pagina este reîncărcată, restabilește starea componentelor;
Toate datele sunt stocate într-o formă serializată într-un câmp ascuns chiar pe pagină.
Din cele de mai sus, este evident că Viewstate - un lucru util, iar oprirea lui aspră va duce la faptul că, după controalele pagina de repornire nu va mai reține informațiile pe care le au intrat, toate proprietățile modificate vor fi înlocuite în stare de nerambursare. În general, trebuie să jucați foarte atent aici.
Puteți să eliminați ViewState în două moduri:
Eliminați ViewState de la controalele care nu stochează informații despre starea lor;
Deplasați spațiul de stocare de stat din câmpul ascuns ViewState la serverul de aplicații.
Să examinăm mai atent fiecare metodă.
Ștergerea funcției ViewState cu proprietatea EnableViewState
În Asp.Net, fiecare control de server are proprietatea EnableViewState. În mod implicit, este adevărat. Aceasta înseamnă că elementul stochează starea sa în câmpul ViewState din pagină. Dacă setați EnableViewState = "false" în proprietățile de control, atunci starea sa nu va mai fi stocată. De exemplu, dacă aveți o etichetă pe pagină care nu își schimbă proprietățile cu PostBack, atunci puteți și chiar trebuie să dezactivați ViewState.
Realizați cu grijă această proprietate, altfel cu PostBack puteți pierde starea actuală a controlului.
Notă. Aveți posibilitatea să dezactivați ViewState la nivel de pagină prin setarea atributului EnableViewState la "false" în eticheta Page. Apoi, câmpul ascuns ViewState dispare din pagină cu totul, iar toate comenzile vor opri stocarea datelor despre starea lor.
Deplasați spațiul de stocare de stat din câmpul ViewState pe serverul de aplicații
Această metodă îmi place mai mult, pentru că de fapt, nu deconectăm nimic, ci schimbăm pur și simplu locația de stocare a informațiilor despre starea componentelor serverului. Vom schimba comportamentul paginii utilizând clasa PageAdapter din ansamblul System.Web.UI.Adapters.
Câteva linii despre ce este un adaptor de pagină? Acesta este un add-on peste manipularea standard a paginilor, ceea ce vă permite să ignorați comportamentul paginii.
În aplicația noastră web, creați clasa MyPageAdapter.cs cu următorul conținut:
Aici rescriem locația de stocare a stării componentelor. În mod implicit, se folosește HiddenFieldPageStatePersister (acesta este câmpul ascuns ViewState din pagină). Îl înlocuim cu SessionPageStatePersister, adică specificați că acum vom stoca starea de vizualizare a paginii ASP.NET pe serverul web.
Acum avem nevoie de paginile noastre pentru a ști că au un asemenea PageAdapter. Pentru a face acest lucru, creați un fișier BrowserFile.browser în directorul App_Browsers al site-ului nostru cu următorul conținut:
Un fișier cu extensia .browser este în general destinat să determine capabilitățile browserului. De exemplu, pentru a oferi diferite versiuni de site-uri la browserele desktop și mobile. Adaptorii pot folosi datele din acest fișier pentru a-și adapta comportamentul. Ce am făcut de fapt.
Aici, în principiu, asta e tot! Acum, toate datele despre starea afișării paginii sunt stocate în sesiunea de pe serverul de aplicații web.
1. Folosind un punct de pe proprietățile EnableViewState au controale care nu se schimba starea lor atunci când postback, puteți reduce cantitatea de informații dezordine în câmpul ascuns Viewstate pe pagina.
2. Transferând stocarea stării comenzilor de la pagina client la server, puteți obține o reducere semnificativă a greutății paginilor. Înregistrările în 200 KB sunt reduse la un nivel laconic
Ați putea fi, de asemenea, interesat de: