A leírt objektum nagyon hasznos és hatékony eszköz. Ennek az objektumnak számos módszere van, ezek leírása az alábbiakban található:
Gyűjtemények:
Mód:
Tulajdonságok:
Response.Cookie-gyűjtés
A Cookie-gyűjtemény beállítja a cookie-k értékeit. Ha a megadott cookie-k nem léteznek, akkor létrehozza őket. Ha a süti létezik, akkor új értéket vesz fel, és a régi megsemmisül.
Válasz.Cookie-k(cookie) [(kulcs) | . attribútumok ] = érték
Lehetőségek:
- aprósütemény- Cookie név
- kulcs- Opcionális paraméter. Ha meg van adva, akkor a cookie egy könyvtár (beágyazott), a kulcs pedig egy értékkészlet.
- attribútumokat- Meghatározott információk magukról a sütikről. Ez a paraméter a következők egyike lehet:
- jelentése- Megadja az adott kulcshoz vagy attribútumhoz rendelendő értéket.
Név | Leírás |
Tartomány | Csak rögzíteni. Ha meg van adva, a cookie-k csak az adott domain kérésére kerülnek elküldésre. |
Lejár | Csak rögzíteni. A süti lejárati dátuma. Ezt a dátumot kell beállítani ahhoz, hogy a cookie-t az ügyfélnek írják HDD az ülés vége után. Ha ez az attribútum nincs beállítva, akkor a cookie lejárati dátuma elfogadásra kerül mostani dátum. A sütik a munkamenet vége után azonnal lejárnak. |
kulcsa van | Csak olvasni. Azt jelzi, hogy a cookie tartalmazza-e az adott kulcsot. |
Pálya | Csak rögzíteni. Ha meg van adva, a cookie csak kérésre kerül átadásra erről az útvonalról. Ha a paraméter nincs beállítva, akkor a rendszer az alkalmazás elérési útját használja. |
biztonságos | Csak rögzíteni. Azt jelzi, hogy a cookie védett lesz-e vagy sem. |
Megjegyzés:
Ha a kulccsal rendelkező cookie a következő szkriptben látható módon jön létre,
<% Response.Cookies("mycookie")("type1") = "сахар" Response.Cookies("mycookie")("type2") = "печенье" %>
akkor a következő fejléc kerül elküldésre:
Set-Cookie:MYCOOKIE=TYPE1=cukor&TYPE2=sütik
Ha kulcsok használata nélkül rendel értéket a mycookie-hoz, akkor ez a művelet megsemmisíti a type1 és type2 kulcsokat. Például:<% Response.Cookies("myCookie") = "шоколадный зефир" %>
Az előző példában a type1 és type2 kulcsok megsemmisülnek, és értékeik elvesznek. A Mycookie mostantól a csokoládé marshmallow értéket fogja tartalmazni.
Egy adott kulcs létezését a következő módon is ellenőrizheti:
<% = Response.Cookies("myCookie").HasKeys %>
Ha az IGAZ felirat jelenik meg, akkor létezik ilyen kulcs, FALSE esetén nem.
Response.Write Method
Response.Írja be a változó_vagy_értékét
Lehetőségek:
- változó_vagy_érték- A böngésző képernyőjén HTML-en keresztül megjelenítendő adatok. Ez a paraméter bármilyen, a VisualBasic Scripting Edition által támogatott típus lehet. Vagyis az adatok típusai lehetnek: dátum, karakterlánc, karakter, numerikus értékek. Jelentése adott paramétert nem tartalmazhat %> kombinációt. Ehelyett használhatja a megfelelő %\> kombinációt. A webszerver lefordítja ezt a szekvenciát a szükségessé a szkript végrehajtásakor.
A következő példa azt mutatja be, hogyan működik a Response.write metódus üzenetek kinyomtatására az ügyfélnek.
Csak annyit mondok:<%Response.write "Привет всем!!!"%>És a neved<%Response.write(Request.Form("name"))%>
A következő példa egy HTML-címkét ad hozzá egy weboldalhoz. Mivel ez a metódus nem tartalmazhatja a %> kombinációt, a %\> szekvenciát használjuk. Tehát egy példa szkript:
<% Response.write "
AZAZ | Firefox | szafari | Króm | Opera | iPhone | Android |
- | - | 4.0+ | 3.0+ | 10.0+ | - | - |
A webhelyek JavaScript használatával automatikusan az első űrlapmezőre fókuszálhatnak. Például a főoldalon Google.com Az autofókusz a keresési kulcsszavak bevitelére szolgáló mezőben található. Bár ez a legtöbb ember számára kényelmes, a haladó felhasználók és a speciális igényű emberek számára bosszantó lehet. Ha megnyomja a szóköz billentyűt, miközben várja az oldal görgetését, akkor nem lesz görgetés, mert a fókusz az űrlap beviteli mezőjén van (a mezőbe görgetés helyett szóköz kerül). Ha az oldal betöltése közben áthelyezi a fókuszt egy másik beviteli mezőre, a webhely autofókusz-szkriptje „hasznos módon” visszahelyezheti a fókuszt az eredeti beviteli mezőre, ami megszakítja a gépelést, és rossz helyre írja a gépelést.
Mivel az automatikus élességállítás JavaScripten keresztül működik, bonyolult lehet ezeket a szélsőségeket kezelni, és kevés lehetőség van azoknak, akik nem akarják, hogy egy weboldal „ellopja” a fókuszt.
E problémák megoldása érdekében a HTML5 minden űrlapelemen bevezeti az autofókusz attribútumot. Az autofókusz attribútum pontosan azt csinálja, aminek hangzik: amint az oldal betöltődik, a fókuszt a megadott mezőre helyezi. De mivel ez csak jelölés és nem szkript, a viselkedés minden webhelyen egységes lesz. Ezenkívül a böngészőgyártók (vagy a bővítmények készítői) lehetőséget kínálhatnak a felhasználóknak az automatikus élességállítás kikapcsolására.
Így állíthat be egy automatikus élességállítási űrlapmezőt.
Az autofókusz attribútumot nem támogató böngészők figyelmen kívül hagyják azt.
Mit? Azt akarja mondani, hogy az autofókusz mindenhol működjön, ne csak a divatos HTML5 böngészőkben? Az aktuális szkriptet elhagyhatja az automatikus élességállítással, csak két apró változtatást kell végrehajtania:
- adja hozzá az autofocus attribútumot a HTML-kódhoz;
- ellenőrizze, hogy a böngésző támogatja-e az autofókusz attribútumot, és ha nem, futtassa a saját szkriptjét.
Autofókusz alternatívával
Állítsa be a fókuszt a lehető legkorábban
Sok weboldal arra vár, hogy a window.onload aktiválódjon és fókuszba állítsa. De a window.onload esemény nem indul el, amíg az összes kép be nem töltődik. Ha az oldalon sok kép található, az ilyen naiv szkriptek potenciálisan megváltoztatják a fókuszt, miután a felhasználó interakcióba lép az oldal egy másik részével. Ez az oka annak, hogy a hatékony felhasználók utálják az autofókuszos szkripteket.
Például az előző részben az autofókusz szkript közvetlenül a hivatkozott űrlapmező mögé kerül. Ez az optimális megoldás, de sértheti az érzéseit, ha egy JavaScript-kód blokkot helyez el az oldal közepére (vagy hétköznapibb, lehet, hogy a rendszer nem olyan rugalmas). Ha nem tud szkriptet beszúrni az oldal közepére, akkor a fókuszt egy egyéni eseményen keresztül kell beállítania, például a $(document).ready() segítségével a jQuery-ben a window.onload helyett.
Autofókusz a jQuery segítségével
A jQuery egyéni esemény azonnal aktiválódik, amint a DOM elérhető – vagyis megvárja az oldal szövegének betöltését, de nem várja meg az összes kép betöltését. Ez nem optimális megközelítés – ha az oldal szokatlanul nagy, vagy a hálózati kapcsolat lassú, előfordulhat, hogy a felhasználó még mindig interakcióba lép az oldallal a fókuszszkript végrehajtása előtt. De még mindig sokkal jobb, mint várni a window.onload esemény aktiválására.
Ha egyetért, és hajlandó egyetlen utasításszkriptet beilleszteni az oldal kódjába, ez egy olyan kompromisszum, amely kevésbé kellemetlen, mint az első lehetőség, és jobb, mint a második. A jQuery egyéni események segítségével beállíthatja saját eseményeit, például az autofocus_ready-t. Ezután manuálisan hívhatja meg ezt az eseményt, közvetlenül azután, hogy az autofókusz mező elérhető. Köszönöm E. M. Shtenbergnek, hogy megtanította nekem ezt a technikát.
Autofókusz alternatív egyéni eseménnyel
Ez a megoldás az első megközelítéshez hasonlóan optimális. A fókusz az űrlapmezőre kerül, amint az technikailag lehetséges, miközben az oldal szövege még betöltődik. Az alkalmazáslogika egy része (a fókusz az űrlapmezőre) átkerült az oldaltörzsből a szakaszba
. Ez a példa a jQuery-n alapul, de az egyéni események fogalma nem egyedülálló a jQuery esetében. Más JavaScript-könyvtárak, például a YUI és a Dojo hasonló funkciókat kínálnak.Foglaljuk össze.
- Fontos a megfelelő fókuszálás.
- Ha lehetséges, kérje meg a böngészőt, hogy használja az autofókusz attribútumot azon a mezőn, amelyre fókuszálni kíván.
- Ha alt kódot használ régebbi böngészőkhöz, határozza meg az autofókusz attribútum támogatását, hogy a szkript csak régebbi böngészőkben fusson.
- Állítsa be a fókuszt a lehető legkorábban. Illessze be a fókuszszkriptet a kódba közvetlenül az űrlapmező után. Ha ez nem zavarja, helyezzen be egy JavaScript-könyvtárat, amely támogatja az egyéni eseményeket, és aktiválja az eseményt a kódban közvetlenül az űrlapmező után. Ha ez nem lehetséges, használjon olyan eseményt, mint a $(document).ready() a jQuery-ből.
- Semmi esetre se várja meg, amíg a window.onload beállítja a fókuszt.
Email címek
Több mint tíz éve az űrlapok csak néhány típusú mezőt tartalmaznak. A leggyakoribbak a következők.
Ezen mezőtípusok mindegyike továbbra is működik HTML5-ben. Ha "frissít a HTML5-re" (talán a !DOCTYPE módosításával), akkor egyetlen változtatást sem kell végrehajtania az űrlapokon. Hurrá a visszafelé kompatibilitásért!
A HTML5 azonban 13 új mezőtípust határoz meg, és nincs ok arra, hogy ne kezdjük el használni őket.
Az új típusok közül az első az e-mail cím. Így néz ki.
Egy mondatot akartam írni, ami úgy kezdődött, hogy "a böngészőkben, amelyek nem támogatják a type="emailt"..." de abbamaradt. Miért? Mert nem biztos, hogy a böngészők nem támogatják-e a type="email"-t. Minden böngésző "support" type="email" . Lehet, hogy nem csinálnak semmi különlegeset, de a type="email"-t nem ismerő böngészők type="text"-ként kezelik, és normál szövegmezőként jelenítik meg.
Hangsúlyozom, hogy ez mennyire fontos. Az interneten több millió űrlap található, amelyek e-mail címet kérnek, és mindegyik használja . Látsz egy szövegmezőt, beírod az e-mail címedet és kész. És itt jön a HTML5, amely a type="email"-t határozza meg. Megőrülnek a böngészők? Nem. A földön minden böngésző az ismeretlen típusú attribútumot type="text"-ként kezeli – még az IE6 is. Így már most "frissítheti" űrlapjait a type="email" használatával.
Mi történik, ha mondjuk a böngésző támogatja a type="email" funkciót? Nos, ez bármit jelenthet. A HTML5 specifikáció nem igényel különösebb felhasználói felületet az új mezőtípusokhoz. Az Opera egy kis ikonnal párnázza ki az űrlapmezőt. Más HTML5-böngészők, például a Safari és a Chrome szövegmezőként jelennek meg – ugyanúgy, mint a type="text" –, így a felhasználók nem veszik észre a különbséget (amíg nem nézik meg a forráskódot).
Aztán ott van az iPhone.
Az iPhone-nak nincs fizikai billentyűzete. Minden "gépelés" a képernyőn megjelenő billentyűzet megérintésével történik, amely a megfelelő időben megjelenik, például amikor egy űrlapmezőre navigál egy weboldalon. Az Apple valami trükkös dolgot csinált az iPhone böngészőjében. Felismer néhány új HTML5-mezőt, és dinamikusan módosítja a képernyőn megjelenő billentyűzetet a bevitel optimalizálása érdekében.
Például egy e-mail cím szöveg, nem? Persze, de ez egy különleges fajta szöveg. Például szinte minden e-mail címben szerepel a @ szimbólum és legalább egy pont (.), de nem valószínű, hogy szóközt tartalmaznak. Tehát amikor iPhone-t használ, és egy elemhez navigál , kap egy képernyő-billentyűzetet, amely a normálnál kevesebb helyet tartalmaz, valamint dedikált karakterbillentyűket. és @.
Hadd foglaljam össze. Nincs hátránya annak, ha azonnal konvertálja az összes e-mail cím mezőjét type="email" formátumra. Gyakorlatilag senki sem fogja észrevenni, kivéve az iPhone felhasználókat, akik valószínűleg szintén nem. De aki észreveszi, az lágyan mosolyog, és megköszöni, hogy egy kicsit megkönnyíti a dolgukat.
Webcímek
A webcím – amelyet a szabványos nerdek URL-nek neveztek, néhány pedáns kivételével, akik URI-nek hívtak – egy másik típusú speciális szöveg. A webcímek szintaxisát a vonatkozó internetes szabvány korlátozza. Ha valaki megkéri Önt, hogy adjon meg egy internetes címet egy űrlapon, akkor valami olyasmit vár, mint a „http://www.google.com/”, nem pedig a „Farwood Road 125”. Gyakoriak a perjelek – még a Google kezdőlapján is van három. Az időszakok is gyakoriak, de a szóközök tilosak. És minden webcímhez tartozik egy domain utótag, például „.com” vagy „.org”.
És hát... (dobpergetés kérem)... . Az iPhone-on ez így néz ki.
Az iPhone megváltoztatta a virtuális billentyűzetét, mint az e-mail-címeknél, de most webcím beírására optimalizálta. A helyet teljesen felváltotta három virtuális kulcs: perjel, pont és „.com” (lenyomva tarthatja a „.com” billentyűt egy másik utótag kiválasztásához, például „.org” vagy „.net”).
Azok a böngészők, amelyek nem támogatják a HTML5-öt, úgy kezelik a type="url"-t, mintha type="text" lenne, így nincs hátránya, ha ezt a típust használja minden olyan mezőben, ahol meg kell adnia egy webcímet.
Számok, mint számlálók
Következő lépés: számok. A szám kérése bonyolultabb, mint egy e-mail vagy webcím kérése. Először is, a számok bonyolultabbak, mint gondolnád. Gyorsan válasszon ki egy számot. -egy? Nem, 1 és 10,7 ½ közötti számra gondoltam? Nem, nem, egy töredékét sem, ostoba. π? Most csak egy irracionális számot választottál.
Szeretném felhívni a figyelmet arra, hogy nem gyakran kérdezik tőled, hogy „csak egy szám”. Valószínűbb, hogy egy bizonyos tartományba eső számot fognak kérni. Lehet, hogy csak bizonyos típusú számokat szeretne ebben a tartományban – esetleg egész számokat, de nem törteket vagy tizedesjegyeket, vagy valami egzotikusabbat, például a 10 többszörösét. A HTML5 mindezt lefedi.
Válasszon egy számot, szinte bármelyiket
min="0"
max = "10"
lépés = "2"
value="6">
Nézzünk meg egy tulajdonságot.
- type="number" azt jelenti, hogy ez egy numerikus mező.
- min="0" adja meg a mező legkisebb megengedett értékét.
- max="10" a legnagyobb megengedett érték.
- step="2" a minimális értékkel kombinálva érvényes számokat határoz meg a következő tartományban: 0, 2, 4 és így tovább, a maximális értékig.
- value="6" alapértelmezett érték. Ha ismerősnek tűnik, mindig ugyanazt az attribútumot használják az űrlapmezők értékeinek meghatározására. Itt kiindulópontként említem meg, hogy a HTML5 a HTML korábbi verzióira épít. Nem kell újratanulnod ahhoz, hogy azt csináld, amit korábban csináltál.
Ez a numerikus mező kódja. Ne feledje, hogy ezek az attribútumok nem kötelezőek. Ha van minimum, de nem maximum, megadhatja a min attribútumot, de a max attribútumot nem. Az alapértelmezett lépésérték 1, és elhagyhatja a step attribútumot, amíg más lépésértékre nincs szükség. Ha nincs alapértelmezett érték, akkor a value attribútum lehet üres karakterlánc, vagy akár teljesen elhagyható.
A HTML5 azonban nem áll meg itt. Ugyanazért az alacsony, alacsony szabadságért kapja ezeket a JavaScript kényelmi módszereket.
- Az input.stepUp(n) n-el növeli a mező értékét.
- input.stepDown(n) n-el csökkenti a mező értékét.
- Az input.valueAsNumber az aktuális értéket floatként adja vissza (az input.value tulajdonság mindig egy karakterlánc).
Megjelenítési problémák? Nos, a böngészőkben a számok manipulálására szolgáló megfelelő felület másképpen van megvalósítva. Az iPhone-on, ahol nehéz a gépelés, a böngésző ismét a számok bevitelére optimalizálja a virtuális billentyűzetet.
Az Opera asztali verziójában a type="number" mező számlálóként jelenik meg kis fel és le nyilakkal, amelyekre kattintva módosíthatja az értékeket.
Az opera tiszteletben tartja a min , max és step attribútumokat, így mindig ésszerű számértéket kap. Ha az értéket a maximumra növeli, a felfelé mutató nyíl a számlálóban szürkévé válik.
Mint minden más beviteli mezőt, amelyet ebben a fejezetben tárgyaltam, a type="number"-t nem támogató böngészők type="text"-ként kezelik. Az alapértelmezett érték jelenik meg a mezőben (ahogyan az érték attribútumban van tárolva), de a többi attribútum, például a min és a max figyelmen kívül marad. Ön szabadon implementálhatja ezeket, vagy használhat olyan JavaScript-keretrendszert, amely már megvalósítja a számlálókezelést. Először nézze meg, hogyan.
if(!.bemeneti típusok.szám)(
// nincs natív támogatás a mezőtípus=számhoz
// megpróbálhatja a Dojo-t vagy egy másik JavaScript-keretrendszert
}
Csúszka számok
A számláló nem az egyetlen módja a számok bevitelének. Valószínűleg Ön is látott már ehhez hasonló csúszkát.
Mostantól egy csúszka is lehet az űrlapon. A kód furcsán hasonlít egy számlálómezőhöz.
min="0"
max = "10"
lépés = "2"
value="6">
Az összes elérhető attribútum megegyezik a type="number" - min , max , step , value - attribútumokkal, és ugyanazt jelenti. Az egyetlen különbség a felhasználói felületben van. A beviteli mező helyett a böngészőknek a type="range" csúszkaként kell megjelenniük. A cikk írásakor a Safari, a Chrome és az Opera legújabb verziói működnek ezzel. Sajnos az iPhone egyszerű szövegmezőként jelenít meg, még a képernyőn megjelenő billentyűzetét sem optimalizálja számok beírására. Minden más böngésző egyszerűen type="text"-ként kezeli a mezőt, így nincs ok arra, hogy azonnal elkezdje használni ezt a típust.
A HTML 4 nem tartalmazza a naptáron keresztüli dátumválasztót. A JavaScript keretrendszerek lehetővé teszik ennek megkerülését (Dojo , jQuery UI , YUI , Closure Library), de természetesen ezen megoldások mindegyike megköveteli a keretrendszer "beágyazását" bármely beágyazott naptárhoz.
A HTML5 végül meghatározza a beépített dátumválasztó engedélyezésének módját szkriptek nélkül. Valójában hat van belőlük: dátum, hónap, hét, idő, dátum + idő és dátum + idő időzónával.
Egyelőre a támogatás... kevés.
Típusú | Opera | Más böngészők |
---|---|---|
type="dátum" | 9.0+ | - |
type="hónap" | 9.0+ | - |
type="hét" | 9.0+ | - |
type="time" | 9.0+ | - |
type="datetime" | 9.0+ | - |
type="datetime local" | 9.0+ | - |
Így jelenik meg az Opera :
Ha időre van szüksége a dátum mellett, az Opera is támogatja :
Ha egy hónapra plusz egy évre van szüksége (pl. hitelkártya lejárati dátuma), az Opera megjelenítheti :
Kevésbé gyakori, de elérhető, az év hetének választása via :
Végül, de nem utolsósorban az időzítés :
Dátumválasztó alternatívával
...
Valószínűleg más böngészők is támogatni fogják ezeket a típusokat. A type="email"-hez és más típusokhoz hasonlóan ezek az űrlapmezők is egyszerű szövegként jelennek meg azokban a böngészőkben, amelyek nem ismerik fel a type="date"-t és annak változatait. Ha akarod, csak használhatod mint boldoggá tenni az Opera felhasználókat, és megvárni, amíg a többi böngésző utoléri. Reálisabb a használata , de ellenőrizze, hogy a böngésző rendelkezik-e beépített dátumválasztó támogatással, és tartalmaz-e egy tetszőleges alternatív szkriptes megoldást (Dojo , jQuery UI , YUI , Closure Library vagy más lehetőségek).
Keresőablak
Szóval keress. Nem csak a Google-ról vagy a Yahoo-ról végzett keresések (na azok is). Gondoljon bármely keresőmezőre, bármely oldalon, bármely webhelyen. Az Amazonnak van keresőmezője, a Yandexnek van keresőmezője, a legtöbb blognak is van. Hogyan készülnek? , mint bármely más szövegmező az interneten. Javítsuk ki.
Keress egy új generációt
Egyes böngészőkben nem észlel különbséget a normál szövegmezőkhöz képest. De ha a Safarit Mac OS X rendszeren használja, akkor ez így fog kinézni.
Találtál különbséget? A beviteli mezőnek lekerekített sarkai vannak! Tudom, tudom, nehezen tudod visszatartani az érzéseidet. De várj, ez még nem minden! Amikor elkezd gépelni a type="search" mezőbe, a Safari beszúr egy kis "x" gombot az ablak jobb oldalára. Az "x" gombra kattintva törli a mező tartalmát. Ugyanígy viselkedik a Google Chrome, amelynek a motorháztetője alatt ugyanaz a technológia található. Mindkét kis trükk az iTunes és más Mac OS X ügyfélalkalmazások natív kereséséhez hasonlóan néz ki és viselkedik.
Az Apple.com használja keresni a webhelyén, hogy segítsen a webhelynek „szeretetteljes” érzést közvetíteni. De itt nincs semmi Mac-specifikus. Ez csak egy kód, így bármely platformon minden böngésző kiválaszthatja a megjelenítés módját a platform konvencióinak megfelelően. Az összes többi új típushoz hasonlóan a type="search"-t nem ismerő böngészők type="text"-ként kezelik, így semmi okunk arra, hogy ne kezdje el használni a type="search" kifejezést az összes keresőmezőben még ma.
Markup professzor azt mondja
Alapértelmezés szerint a Safari nem vonatkozik rá a legtöbb stílus. Ha arra szeretné kényszeríteni a Safarit, hogy a keresőmezőt normál szövegmezőként kezelje (saját stílusok alkalmazása érdekében), adja hozzá ezt a szabályt a stíluslaphoz.
bemenet(
-webkit-appearance:textfield;
}
Köszönöm John Lane-nek, hogy megtanított erre a trükkre.
Színválasztás
A HTML5 egy mezőt is meghatároz , amely lehetővé teszi a szín kiválasztását, és hexadecimális jelöléssel adja vissza. Egyik böngésző sem támogatja a színválasztást, ami kár, mert mindig is szerettem a Mac OS palettákat. Talán egy nap.
Jegyzet. fordító. Az Opera 11 támogatja ezt a funkciót.
Űrlap érvényesítése
Ebben a fejezetben az új űrlapelemekről és az olyan új funkciókról beszéltem, mint az autofókusz, de nem említettem a HTML5-űrlapok talán legizgalmasabb részét: az automatikus beviteli ellenőrzést. Nézzük meg az e-mail-cím űrlapon történő megadásának gyakori problémáit. Valószínűleg van kliensoldali érvényesítésed JavaScript-en keresztül, amelyet szerveroldali érvényesítés követ PHP-n, Python-on vagy más szerveroldali nyelven. A HTML5 soha nem fogja felváltani a szerveroldali érvényesítést, de egy nap felválthatja az ügyféloldali érvényesítést.
Két nagy probléma van a JavaScript e-mail cím ellenőrzésével:
- Néhány látogatója (valószínűleg körülbelül 10%) nem rendelkezik engedélyezve a JavaScript használatával.
- Helytelen címet fog kapni.
Komolyan mondom, rossz címet fog kapni. Hihetetlenül nehéz meghatározni, hogy egy véletlenszerű karakterkészlet érvényes e-mail cím-e. Minél jobban nézel, annál nehezebb lesz. Mondtam már, hogy nagyon-nagyon nehéz? Nem egyszerűbb ezt a fejfájást a böngészőjére akasztani?
Az Opera ellenőrzi a type="email"
Itt van egy képernyőkép az Opera 11-ből, bár ez a funkció az Opera 9 óta létezik. A kód tartalmazza a type attribútum e-mailre való beállítását. Amikor egy Opera-felhasználó megpróbál beküldeni egy űrlapot a , a böngésző akkor is automatikusan ellenőrzi az e-mail címet, ha a szkriptek le vannak tiltva.
A HTML5 webcím-ellenőrzést is kínál mezővel és számok -val . A számérvényesítés tiszteletben tartja a min és max attribútumértékeket, így a böngészők nem engedik be az űrlapot, ha túl nagy számot ad meg.
A HTML5-ben nincs kód az űrlapellenőrzés engedélyezésére, ez alapértelmezés szerint megtörténik. Az érvényesítés letiltásához használja a novalidate attribútumot.
Ne tesztelj
A böngészők lassan engedélyezik az űrlapellenőrzés támogatását a HTML5-ben. A Firefox 4 teljes támogatást fog kapni. Sajnos a Safari és a Chrome csak részben valósítja meg: érvényesíti az űrlapelemeket, de nem jelenít meg semmilyen látható üzenetet, ha az űrlapmezők ellenőrzése sikertelen. Más szóval, ha érvénytelen (vagy hibásan írt) dátumot ad meg a type="date" mezőben, a Safari és a Chrome nem küldi el az űrlapot, de nem árulja el, hogy miért nem. Olyan mezőre állítják a fókuszt, amely érvénytelen értéket tartalmaz, de nem jelenítenek meg hibaüzenetet, mint például az Opera vagy a Firefox 4.
Szükséges Mezők
AZAZ | Firefox | szafari | Króm | Opera | iPhone | Android |
- | 4.0+ | - | - | 9.0+ | - | - |
Az űrlapellenőrzés a HTML5-ben nem korlátozódik az egyes mezők típusára. Azt is megadhatja, hogy bizonyos mezők kitöltése kötelező. Az űrlap elküldése előtt az ilyen mezőknek értékkel kell rendelkezniük.
A kötelező mezők kódja a lehető legegyszerűbb.
A böngészők módosíthatják a kötelező mezők alapértelmezett megjelenését. Íme egy példa arra, hogyan néz ki a Mozilla Firefox 4.0.
Ezenkívül, ha egy űrlapot egy kötelező érték kitöltése nélkül próbál elküldeni, a Firefox megjelenít egy információs sávot, amely szerint a mező kitöltése kötelező, és nem lehet üresen hagyni.
Tegyük fel, hogy adatokat kell szereznünk az oldalról, amelyek kézi gyűjtése a mennyiség miatt nem praktikus vagy lehetetlen. Ilyen esetben az alábbiakban ismertetett eszközökkel automatizálhatjuk a folyamatot.
kéri a könyvtárat
Python könyvtár kérések küldéséhez a szerverhez és válaszok feldolgozásához. Az elemző szkript alapja és fő fegyverünk. Ezt a könyvtárat használva az oldal tartalmát html formátumban kapjuk meg a további elemzéshez.
import kérések válasz = kérések. get ("https://ya.ru" ) # get-request print (válasz . szöveg ) # oldaltartalom nyomtatása payload = ( "kulcs1" : "érték1" , "kulcs2" : "érték2" ) válasz = kérések . get("http://http://httpbin.org/get" , params = hasznos teher ) # kérés paraméterekkel headers = ( "user-agent" : "my-app/0.0.1" ) válasz = kérések . get(url , headers = fejlécek ) # kérés meghatározott html fejlécekkel
API
Alkalmazásprogramozási felület – a webalkalmazás tulajdonosa által más fejlesztők számára biztosított alkalmazásprogramozási felület. Az igényeinket kielégítő API hiánya az első dolog, amit meg kell győződnünk, mielőtt nekivágnánk az oldal forráskódjának elemzésének és értelmező írásának. Sok népszerű webhely saját API-val és dokumentációval rendelkezik, amely elmagyarázza, hogyan kell használni. Az api-t így is használhatjuk - a dokumentációnak megfelelően http kérést képezünk, és kérések segítségével kapunk választ.
BS4
A Beautifulsoup4 egy könyvtár a html és xml dokumentumok elemzéséhez. Lehetővé teszi, hogy közvetlenül hozzáférjen a html címkék tartalmához.
from bs4 import BeautifulSoup soup = BeautifulSoup (raw_html , "html.parser" ) print (leves . find ("p" , class_ = "some-class" ) . text ) # nyomtatja ki a "p" címke tartalmát a "some-class" osztály szerint
Szelén WebDriver
Az oldalon található adatok dinamikusan generálhatók javascript segítségével. Ebben az esetben a requests + bs4 nem tudja elemezni ezeket az adatokat. A helyzet az, hogy a bs4 js végrehajtása nélkül elemzi az oldal forráskódját. A js-kód végrehajtásához és a böngészőben láthatóval azonos oldal eléréséhez használhat szelén web-illesztőprogramot - ez egy illesztőprogram készlet különféle böngészőkhöz, könyvtárakkal ellátva az illesztőprogramokkal való együttműködéshez.
És mi van, ha van engedély?
session = kérések.Session() data = ("bejelentkezési_felhasználónév":"bejelentkezés", "bejelentkezési_jelszó":"jelszó") url = "http://site.com/login.php" válasz = session.post(url, adatok =adatok)
De mi van akkor, ha az oldal sok kérés miatt tilt?
- Állítsa be a késleltetést a kérések között:
válasz = requests.get(url, timeout=(10, 0.01)) # kapcsolat időtúllépése, olvasási időtúllépés (másodpercben)
- Tegye magát böngészőnek szelén web-illesztőprogram használatával, vagy adja át a felhasználói ügynök fejléc tartalmát, és kérjen:
user_agent = ("Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:50.0) " "Gecko/20100101 Firefox/50.0") request = requests.get(url, headers=("User-Agent":user_agent))
- Proxy használata:
Az osztály példányának lekéréséhez használja a wa()->getResponse() metódushívást, például:
Wa()->getResponse()->getHeader("Tartalomtípus")
Mód
közéleti funkció CSS hozzáadása ($url, $app_id = false)
Hozzáad egy URL-t a CSS-fájlok listájához. Az összes hozzáadott CSS-fájl URL-je lekérhető a Smarty sablonban a ($wa->css()) metódussal.
Lehetőségek
- $url
A CSS-fájl relatív URL-címe. Ha a $app_id paraméter értéke meg van adva, akkor a fájl URL-jét a megfelelő alkalmazás fájljait tartalmazó könyvtár URL-címéhez viszonyítva kell megadni. Ellenkező esetben a relatív URL-nek relatívnak kell lennie a keretrendszer telepítési könyvtárához.
- $app_id
Alkalmazásazonosító.
Példa
wa()->getResponse()->addCss("css/myapp.css", "myapp");közéleti funkció Google Analytics hozzáadása ($str)
Hozzáad egy JavaScript-kódrészletet a Google Analytics számára. A Google Analytics kód (beleértve az ezzel a módszerrel hozzáadott kódot is) a webhely HTML-sablonjában található a ($wa->headJs()) metódussal.
Lehetőségek
- $str
JavaScript kód töredéke.
közéleti funkció addHeader ($név, $érték, $csere = igaz)
Hozzáad egy fejlécet, amelyet a szerver a felhasználói kérésre válaszul küld. Az így hozzáadott összes fejléc elküldésre kerül a felhasználónak a .
Lehetőségek
- $név
Cím neve.
- $érték
Cím értéke.
- $csere
Jelző, amely azt jelzi, hogy a megadott fejléc korábban beállított értékét le kell cserélni.
Példa
wa()->getResponse()->addHeader("Tartalomtípus", "Application/json");közéleti funkció addJs ($url, $app_id = false)
Hozzáad egy URL-t a JavaScript-fájlok listájához. Minden hozzáadott JavaScript URL lekérhető a Smarty sablonban a ($wa->js()) metódussal.
Lehetőségek
- $url
A JavaScript-fájl URL-je. Ha a $app_id paraméter értéke meg van adva, akkor a fájl URL-jét a megfelelő alkalmazás fájljait tartalmazó könyvtár URL-címéhez viszonyítva kell megadni. Ellenkező esetben a relatív URL-nek relatívnak kell lennie a keretrendszer telepítési könyvtárához.
- $app_id
Alkalmazásazonosító.
Példa
wa()->getResponse()->addJs("js/myapp.js", "myapp");közéleti funkció getCss ($html = igaz, $szigorú = hamis)
Visszaadja a korábban hozzáadott CSS-fájlhivatkozások listáját.
Lehetőségek
- $html
Jelző, amely a HTML-kód visszaküldésének szükségességét jelzi a CSS-fájlok összekapcsolásához. Ha false van megadva, a metódus az ilyen fájlok URL-címeinek tömbjét adja vissza.
- $szigorú
Jelölje meg, ha a $html igaz értékre van állítva, XHTML formátumot használ a HTML helyett.
Példa
wa()->getResponse()->getCss();közéleti funkció getHeader ($név = null)
A válaszfejléc értékét adja vissza.
Lehetőségek
- $név
Annak a fejlécnek az azonosítója, amelynek értékét vissza kell adni. Ha nincs megadva, a metódus a fejlécek teljes aktuális tömbjét adja vissza.
Példa
wa()->getResponse()->addHeader("Tartalomtípus", "Application/json"); wa()->getResponse()->getHeader("Tartalomtípus");Eredmény
alkalmazás/jsonközéleti funkció getJs ($html = igaz)
Visszaadja a JavaScript válaszfájl hivatkozásainak listáját.
Lehetőségek
- $html
Opcionális jelző, amely azt jelzi, hogy vissza kell adni a HTML-kódot a JavaScript-fájlok összekapcsolásához. Ellenkező esetben a metódus a fájl URL-ek aktuális tömbjét adja vissza.
Példa
wa()->getResponse()->getJs();közéleti funkció getMeta ($név = null)
A META adatok tartalmát adja vissza: oldal címe ("title"), META címkék kulcsszavak ("kulcsszavak"), leírás ("leírás").
Lehetőségek
- $név
Annak a META adatelemnek az azonosítója, amelynek értékét vissza kell adni. Ha nincs megadva, a metódus a META adatok teljes aktuális tömbjét adja vissza.
Példa
wa()->getResponse()->getMeta("kulcsszavak");közéleti funkció getStatus()
A korábban beállított szerver válaszállapotot adja vissza.
Példa
wa()->getResponse()->setStatus(200); wa()->getResponse()->getStatus();Eredmény
200közéleti funkció getTitle()
Az oldal címét (TITLE) adja vissza.
Példa
wa()->getResponse()->setTitle("Saját online áruház"); wa()->getResponse()->getTitle();Eredmény
Az én webáruházamközéleti funkció átirányítás ($url, $code = null)
Átirányítja a felhasználót a megadott URL-re.
Lehetőségek
- $url
Az az URL, amelyre a felhasználót át kell irányítani.
- $kód
Az átirányítást kísérő szerver válaszkód.
Példa
wa()->getResponse()->redirect("http://otherdomain.ru/", 301);közéleti funkció fejlécek küldése()
Elküldi a korábban beállított fejléceket.
Példa
wa()->getResponse()->addHeader("Tartalomtípus", "Application/json"); wa()->getResponse()->sendHeaders();közéleti funkció setCookie ($név, $érték, $lejárat = null, $útvonal = null, $domain = "", $biztonságos = false, $http_csak = hamis)
Beállítja a cookie-bejegyzés értékét a setcookie PHP függvény segítségével.
Lehetőségek
- $név
Record ID.
- $érték
A bejegyzés értéke.
- $expire
Lejárati idő.
- $útvonal
Az URI "alkönyvtárának" az elérési útja, amelyen belül a bejegyzés értéke érvényes.
- $domain
Az a domain név, amelyre a bejegyzés értéke érvényes.
- $biztonságos
Jelző, amely azt jelzi, hogy az írás csak akkor érhető el, ha az értéket a HTTPS protokollon keresztül továbbítják.
- $http_only
Jelző, amely azt jelzi, hogy a rekord értéke csak a HTTP protokollon keresztül érhető el, és nem érhető el kliens szkriptekkel (JavaScript).
Példa
wa()->getResponse()->setCookie("kód", $kód, idő() + 30 * 86400, null, "", hamis, igaz);közéleti funkció setMeta ($név, $érték = null)
Beállítja a META adatok értékét. Ez az érték a Smarty sablonokban érhető el a ($wa->meta()) metódussal.
Lehetőségek
- $név
META adatelem azonosító: oldal címe ("title"), META címkék kulcsszavai ("kulcsszavak") és leírás ("leírás").
- $érték
Az elem értéke.
Példa
wa()->getResponse()->setMeta("kulcsszavak", $kulcsszavak);közéleti funkció setStatus ($kód)
Beállítja a szerver válasz állapotát.
Lehetőségek
- $kód
Állapotkód
Példa
wa()->getResponse()->setStatus(404);közéleti funkció setTitle ($title)
Beállítja az oldal címét (TITLE). A címtartalom elérhető a Smarty sablonokban a ($wa->title()) metódussal.
Válasz generálása a vezérlőktől
Miután a vezérlő befejezte a kérés feldolgozását, általában választ kell generálnia. Amikor alacsony szintű vezérlőt hozunk létre az IController interfész közvetlen megvalósításával, felelősséget kell vállalnunk a kérésfeldolgozás minden aspektusáért, beleértve a válasz generálását az ügyfélnek.
Például egy HTML-válasz küldéséhez létre kell hoznia és össze kell írnia a HTML-adatokat, majd el kell küldenie azokat az ügyfélnek a Response.Write() metódussal. Hasonlóképpen, ha a felhasználó böngészőjét egy másik URL-re szeretné átirányítani, meg kell hívnia a Response.Redirect() metódust, és át kell adnia neki a szükséges URL-t. Mindkét megközelítést az alábbi kód szemlélteti, amely a BasicController osztály kiterjesztéseit mutatja be, amelyeket egy korábbi cikkben hoztunk létre az IController felület implementációjával:
A System.Web.Mvc használata; a System.Web.Routing használatával; névtér ControllersAndActions.Controllers ( public class BasicController: IController ( public void Execute(RequestContext requestContext)) ( string controller = (string)requestContext.RouteData.Values["controller"]; string action = (karakterlánc)requestContext.RouteDataction.Values "]; if (action.ToLower() == "átirányítás") ( requestContext.HttpContext.Response.Redirect("/Derived/Index"); ) else ( requestContext.HttpContext.Response.Write(string.Format("Controller) : (0), Műveletmód: (1)", vezérlő, művelet)); ) ) ) )
Ugyanez a megközelítés alkalmazható, ha a vezérlő a Controller osztályból öröklődik. Az Execute() metódus requestContext.HttpContext.Response tulajdonságának beolvasásakor visszaadott HttpResponseBase osztály a Controller.Response tulajdonságon keresztül érhető el, amint az a következő példában látható, amely kiterjeszti a DerivedController osztályt, amelyet szintén korábban hoztak létre a Vezérlő osztály:
Rendszer használata; a System.Web használatával; a System.Web.Mvc használatával; névtér ControllersAndActions.Controllers ( publikus osztály DerivedController: Controller ( public ActionResult Index() ( // ... ) public void ProduceOutput() ( if (Server.MachineName == "ProfessorWeb") Response.Redirect("/Basic/Index" ); else Response.Write("Vezérlő: származtatott, műveleti módszer: ProduceOutput"); ) ) )
A ProduceOutput() metódus a Server.MachineName tulajdonság értékét használja annak eldöntésére, hogy melyik választ küldje el az ügyfélnek. (A "ProfessorWeb" a fejlesztőgépem neve.)
Bár ez a megközelítés, amely a felhasználó számára választ generál, működik, számos probléma van vele:
A vezérlőosztályoknak információkat kell tartalmazniuk a HTML- vagy URL-struktúráról, ami megnehezíti az osztályok olvashatóságát és karbantartását.
Egy olyan vezérlőt, amely közvetlenül a kimenetre generál választ, nehéz tesztelni. Létre kell hoznia a Response objektum mintamegvalósításait, majd fel kell tudnia dolgozni a vezérlő kimenetét annak meghatározásához, hogy mi az. Ez például azt jelentheti, hogy végre kell hajtani a HTML-jelölés kulcsszóelemzését, ami hosszú és fárasztó folyamat.
Az egyes válaszok apró részleteinek ez a kezelése bonyolult és hibára hajlamos. Egyes programozók szeretik az abszolút vezérlést, amelyet egy alacsony szintű vezérlő felépítése biztosít, de ez általában nagyon gyorsan bonyolulttá válik.
Szerencsére az MVC Framework rendelkezik egy praktikus eszközzel, amely megoldja az összes említett problémát - a cselekvések eredményeit. A következő szakaszok elmagyarázzák a műveleti eredmények fogalmát, és különböző módokat mutatnak be annak felhasználására a vezérlőktől érkező válaszok generálására.
A műveletek eredményei
Az MVC-keretrendszer cselekvési eredményei a szándéknyilatkozatok és a szándékok végrehajtásának elkülönítésére szolgálnak (elnézést a tautológiáért). A fogalom egyszerűnek tűnik, ha egyszer rájöttél, de némi közvetettség miatt időbe telik, amíg megérted.
Ahelyett, hogy közvetlenül a Response objektummal foglalkoznának, a műveleti metódusok egy osztályból származó objektumot adnak vissza ActionResult, amely leírja, hogy mi legyen a vezérlő válasza, például egy nézet megjelenítése vagy átirányítás egy másik URL-re vagy műveleti módszerre. Azonban (ez az indirekt) a válasz nem közvetlenül generálódik. Ehelyett egy ActionResult objektum jön létre, amelyet az MVC-keretrendszer feldolgoz, hogy megkapja az eredményt a műveleti metódus meghívása után.
Az Action Results System egy példa a Command tervezési mintára. Ez a sablon olyan forgatókönyveket jelenít meg, amelyekben elmenti és átadja a végrehajtandó műveleteket leíró objektumokat.
Amikor az MVC-keretrendszer ActionResult objektumot kap egy műveleti metódustól, meghívja ExecuteResult() metódus Az objektum osztályában meghatározott. A művelet eredményeinek megvalósítása ezután a Response objektumon működik, és a szándékának megfelelő kimenetet generál. Ennek bemutatásához hozzunk létre egy Infrastructure mappát, és adjunk hozzá egy CustomRedirectResult.cs nevű új osztályfájlt az alábbi példában látható egyéni ActionResult megvalósítással:
A System.Web.Mvc használata; névtér ControllersAndActions.Infrastructure ( nyilvános osztály CustomRedirectResult: ActionResult ( public string Url ( get; set; ) public override void ExecuteResult(ControllerContext context) ( string fullUrl = UrlHelper.GenerateContentUrl(Url, context.Context.Http);Context.Context.Http (teljesUrl); ) ) )
Ez az osztály a System.Web.Mvc.RedirectResult osztály működésén alapul. A nyílt forráskódú MVC-keretrendszer egyik előnye abban rejlik, hogy képes bárminek a belső működését felfedezni. A CustomRedirectResult osztály sokkal egyszerűbb, mint az MVC megfelelője, de a cikk céljaira elegendő.
A RedirectResult osztály példányának létrehozásakor megadjuk azt az URL-t, amelyre a felhasználót át kell irányítani. Az ExecuteResult() metódus, amelyet az MVC-keretrendszer a műveleti metódus befejezése után hajt végre, megkapja a válasz objektumot a kérésre a keretrendszer által biztosított ControllerContext objektumon keresztül, és meghívja vagy a RedirectPermanent() metódust, vagy a Redirect() metódust (ezt pontosan ez történt az IController alacsony szintű megvalósításán belül a cikk korábbi példájában).
A CustomRedirectResult osztály használatát az alábbi példa szemlélteti, amely bemutatja a származtatott vezérlőn végrehajtott módosításokat:
// ... a ControllersAndActions.Infrastructure használatával; névtér ControllersAndActions.Controllers ( nyilvános osztály DerivedController: Controller ( public ActionResult Index() ( // ... ) public ActionResult ProduceOutput() ( if (Server.MachineName == "MyMachineName") új CustomRedirectResult eredményt ad vissza ( Url = "/Basic Index" ); else ( Response.Write("Vezérlő: Származtatott, Műveletmód: ProduceOutput"); return null; ) ) )
Vegye figyelembe, hogy kénytelenek voltunk megváltoztatni a műveleti metódus eredményét, hogy ActionResultot adjunk vissza. Null értéket adunk vissza, ha nem akarjuk, hogy az MVC-keretrendszer bármit is csináljon, amikor a műveleti metódusunk befejeződött, ami akkor történt, ha a CustomRedirectResult példányt nem adták vissza.
Egységtesztelési vezérlők és műveletek
Az MVC-keretrendszer számos része az egységtesztelés megkönnyítésére szolgál, és ez különösen igaz a műveletekre és a vezérlőkre. Ennek a támogatásnak több oka is van:
A műveleteket és a vezérlőket a webszerveren kívül is tesztelheti. A kontextusobjektumok az alaposztályaikon (például a HttpRequestBase) keresztül érhetők el, amelyet könnyű utánozni.
Nem kell elemeznie a HTML-jelölést egy műveleti módszer eredményeinek teszteléséhez. Megvizsgálhatja a visszaküldött ActionResult objektumot, hogy megbizonyosodjon arról, hogy a várt eredményeket kapja.
Az ügyfélkérések emulációja nem szükséges. Az MVC-keretrendszer-modell-kötési rendszer lehetővé teszi olyan műveleti metódusok írását, amelyek paramétereibe bemenetet kapnak. Egy műveleti módszer teszteléséhez egyszerűen meg kell hívnia közvetlenül, és meg kell adnia a megfelelő paraméterértékeket.
A vezérlőkből származó adatok generálásával foglalkozó jövőbeni cikkek bemutatják, hogyan hozhat létre egységteszteket a különféle műveleti eredményekhez.
Ne felejtse el, hogy az egységteszt csak egy része a képnek. Egy alkalmazás összetett viselkedése akkor fordul elő, ha a műveleti módszereket szekvenciálisan hívják meg. Az egységtesztelés a legjobban kombinálható más tesztelési módszerekkel.
Most, hogy tudja, hogyan működik az egyéni átirányítási művelet eredménye, válthat megfelelőjére, amelyet az MVC keretrendszer biztosít, amely hatékony és a Microsoft által alaposan tesztelt. A származtatott vezérlő szükséges módosítása az alábbiakban látható:
// ... public ActionResult ProduceOutput() ( return new RedirectResult("/Basic/Index"); ) // ...
A feltételes utasítást eltávolítottuk a műveleti metódusból, ami azt jelenti, hogy miután az alkalmazás elindul, és egy URL-re navigál, mint például a /Derived/ProduceOutput , a böngésző egy olyan URL-re lesz átirányítva, mint például a /Basic/Index. A műveleti metódus kódjának egyszerűsítése érdekében a Controller osztály kényelmi módszereket tartalmaz különféle ActionResult objektumok generálására. Így például ugyanazt a hatást érhetjük el, mint a fenti példában, ha visszaadjuk a Redirect() metódus eredményét:
// ... public ActionResult ProduceOutput() ( return Redirect("/Basic/Index"); ) // ...
A műveleti eredményrendszerben nincs semmi különösebben bonyolult, de végső soron egyszerűbb, tisztább és konzisztensebb kódot kapunk, amely könnyen olvasható és egységtesztelhető. Például átirányítás esetén egyszerűen ellenőrizheti, hogy a műveleti metódus egy olyan RedirectResult példányt ad-e vissza, amelynek Url tulajdonsága tartalmazza a várt célt.
Az MVC-keretrendszer számos beépített műveleti eredménytípust határoz meg, amelyeket az alábbi táblázat ismertet:
Típusú | Leírás | A Controller osztály segítő módszerei |
---|---|---|
Eredmény megtekintése | Megjeleníti a megadott vagy szabványos nézetsablont |
Kilátás() |
PartialViewResult | Megjeleníti a megadott vagy szabványos részleges nézetsablont |
Részleges nézet() |
RedirectToRouteResult | HTTP 301-es vagy 302-es átirányítást ad ki a műveleti metódushoz vagy a megadott útvonalbejegyzéshez, URL-t generálva az útválasztási konfigurációnak megfelelően |
RedirectToAction() RedirectToActionPermanent() RedirectToRoute() RedirectToRoutePermanent() |
RedirectResult | HTTP 301-es vagy 302-es átirányítást ad ki a megadott URL-re |
átirányítás() RedirectPermanent() |
Tartalom Eredmény | Formázatlan szöveges adatokat küld vissza a böngészőnek, opcionálisan beállítva a tartalom típusú fejlécet |
tartalom() |
FileResult | Bináris adatokat (például fájlt a lemezen vagy bájttömböt a memóriában) közvetlenül a böngészőnek továbbít |
Fájl() |
JsonResult | Sorosít egy .NET objektumot JSON formátumba, és válaszként elküldi. Az ilyen jellegű válaszok gyakrabban jönnek létre a Web API és az AJAX eszközök használatakor. |
json() |
JavaScriptResult | JavaScript-forráskódot küld a böngésző által végrehajtandó |
JavaScript() |
HttpUnauthorizedResult | A HTTP-válasz állapotkódját 401-re állítja (jelentése: "nincs jogosult"), ami azt eredményezi, hogy az aktuális hitelesítési mechanizmus (Űrlap-hitelesítés vagy Windows-hitelesítés) felszólítja a látogatót, hogy jelentkezzen be. |
Nem |
HttpNotFoundResult | HTTP-hibát ad vissza 404-es kóddal - Nem található (nem található) |
HttpNotFound() |
HttpStatusCodeResult | A megadott HTTP-kódot adja vissza |
Nem |
EmptyResult | Semmittevés |
Nem |
Mindezek a típusok az ActionResult osztályból származnak, és sokuknak praktikus segítő metódusai vannak a Controller osztályban. A következő cikkekben bemutatjuk ezen eredménytípusok használatát.