Skirtumas tarp „Server.Transfer“ ir „Response.Redirect“

„Server.Transfer vs Response.Redirect“

Serveris ir „Response“ yra ASP.NET objektai. Objekto serveryje pateikiami įvairių su serveriu susijusių užduočių metodai ir ypatybės. Perkėlimas yra serverio objekto metodas ir jis siunčia esamos būklės informaciją apdoroti į kitą .asp failą. Atsakymo objektas apibūdina metodus ir savybes, susijusius su serverio atsakymu. Peradresavimas yra „Response“ objekto metodas ir jis siunčia pranešimą naršyklei, priversdamas jį prisijungti prie kito URL. Nors tiek „Server.Transfer“, tiek „Response.Redirect“ gali būti naudojami vartotojui perkelti iš vieno puslapio į kitą, jie skiriasi tuo, kaip jie iš tikrųjų atlieka šią užduotį.

Kas yra „Response.Redirect“?

Peradresavimas yra objektas „Atsakas“. Kai iškviečiamas atsakymo metodas, jis siunčia HTTP kodą 302 ir prašomo tinklalapio URL į vartotojų naršyklę. HTTP kodas 302 informuoja vartotojo naršyklę, kad prašomas šaltinis yra kitu URL. Kai naršyklė gauna kodą, ji atidaro šaltinį naujoje vietoje. Prašomas interneto puslapis gali būti tame pačiame serveryje kaip ir puslapis, kuriame buvo užklausa, arba jis galėjo būti kitame serveryje. Pateikiant užklausą dėl tinklalapio, esančio tame pačiame serveryje kaip ir dabartinis puslapis, atsakymo metodą galima naudoti taip:

„Response.Redirect“ („nextPage.html“);

Pateikiant užklausą dėl kito serverio tinklalapio, „Response“ metodą galima naudoti taip:

„Response.Redirect“ („http://www.newServer.com/newPage.aspx“);

Kas yra „Server.Transfer“?

Kaip minėta anksčiau, perkėlimas yra serverio objekto metodas. Kai iškviečiamas perdavimo metodas, pradinė užklausa yra modifikuojama, kad būtų perkelta į kitą puslapį tame pačiame serveryje. Kai naudojant „Server.Transfer“ prašoma naujo puslapio, URL, rodomas vartotojų žiniatinklio naršyklėje, nesikeičia. Taip yra todėl, kad perdavimas vyksta serverio pusėje, o naršyklė neturi jokių žinių apie perkėlimą. Naudojant antrąją „Server.Transfer“ perkrovą (eilutės kelias, „bool preserveForm“) ir nustatant, kad antrasis parametras yra tikras, paskelbti formos kintamieji ir užklausos eilutės gali būti prieinami antrajam puslapiui..

Kuo skiriasi „Server.Transfer“ ir „Response.Redirect“?

Nors ir „Server.Transfer“, ir „Response.Redirect“ gali būti naudojami vartotojui perkelti iš vieno puslapio į kitą, tarp šių dviejų metodų yra keletas skirtumų. Be akivaizdaus sintaksinio skirtumo, „Response.Redirect“ padaro serverį atgal, o „Server.Transfer“ keičia interneto serverio fokusą į kitą tinklalapį. Todėl naudojant „Server.Transfer“ galima išsaugoti serverio išteklius. Kita vertus, „Response.Redirect“ gali būti naudojamas nukreipti vartotoją į kito serverio tinklalapį, tuo tarpu „Server.Transfer“ gali būti naudojamas tik nukreipti vartotoją į to paties serverio tinklalapius. Taip pat naudojant „Server.Transfer“, ankstesnio puslapio ypatybes gali pasiekti naujas puslapis, tačiau tai neįmanoma naudojant „Response.Redirect“. Be to, „Response.Redirect“ keičia URL adresą naršyklės juostoje, kai pasiekiamas naujas puslapis, bet kai naudojamas serveris. Perduodamas pirminis URL išsaugomas ir puslapio turinys tiesiog pakeičiamas. Taigi vartotojas negali jo naudoti žymėdamas naują puslapį.