<p id='prepend'>V Φlßnku si ukß₧eme, jak v ASP.NET pracujeme s cookies, jejich uklßdßnφ i Φtenφ. V ukßzkovΘm p°φkladu dßme u₧ivateli aplikace mo₧nost ulo₧it si svou volbu, aby aplikace i p°i pozd∞jÜφm pou₧itφ pracovala s ji₧ d°φve zvolen²m nastavenφm.</p>
<p>V ukßzkovΘ aplikaci budeme pracovat s jednou hodnotou. Hodnotu bude u₧ivatel volit zatrhßvacφm polφΦkem. P°i zatr₧enΘm poli bude aplikace <a href='http://interval.cz/clanek.asp?article=2641' title='R∙₧iΦka, PAvel: NauΦte AdRotator zobrazovat flash v ASP.NET'>zobrazovat bannery</a>. Dφky ulo₧enφ do cookie si aplikace u₧ivatelovu volbu zapamatuje, a tak bude zachovßna i p°i dalÜφm vstupu do naÜφ aplikace - stav bude z cookie obnoven. ProhlΘdn∞te si <a href='http://interval.cz/podklady/ruzicka/aspx/735/Default.aspx'>ukßzku</a> (<a href='podklady/ruzicka/aspx/735/aspnetcookies.zip'>zdrojov² k≤d</a>). Pro ov∞°enφ sprßvnΘ funkce uklßdßnφ do cookie je nejlΘpe si otev°φt aplikaci ve dvou oknech, v jednom provßd∞t nastavovßnφ aplikace (dochßzφ k postback∙m) a ve druhΘm jen obnovovat okno (nedochßzφ k postbacku) a pozorovat v n∞m chovßnφ aplikace.</p>
<p>Pro prßci s cookies vyu₧φvßme t°φdu HttpCookie (vytvß°enφ, nastavenφ vlastnostφ) a <a href='http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemWebHttpContextClassTopic.asp'>HttpContext</a> skrze <a href='http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconaspnetintrinsicobjects.asp'>vestav∞nΘ objekty</a> (tzv. intrinsic) <a href='http://msdn.microsoft.com/library/en-us/cpref/html/frlrfsystemwebhttpcontextclassrequesttopic.asp'>Request</a> (pro Φtenφ) a <a href='http://msdn.microsoft.com/library/en-us/cpref/html/frlrfsystemwebhttpcontextclassresponsetopic.asp'>Response</a> (odeslßnφ klientovi).</p>
<p>Ve webovΘm formulß°i mßme <a href='http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwebuiwebcontrolscheckboxclasstopic.asp'>CheckBox</a>, kter² slou₧φ k nastavenφ aplikace. Dφky vlastnosti <a href='http://msdn.microsoft.com/library/en-us/cpref/html/frlrfsystemwebuiwebcontrolscheckboxclassautopostbacktopic.asp'>AutoPostBack="true"</a> dojde k odeslßnφ formulß°i pouh²m kliknutφm na prvek. Pokud bychom cht∞li aplikaci oprostit od zßvislosti na JavaScriptu, m∙₧eme mezi znaΦky <samp>noscript</samp> umφstit <a href='http://interval.cz/clanek.asp?article=2776' title='R∙₧iΦka, Pavel: Calendar Control pou₧iteln² i bez JavaScriptu v ASP.NET'>alternativnφ odesφlacφ tlaΦφtko</a>. P°i zm∞n∞ nastavenφ je volßna metoda <em>SaveCheckBoxStatus</em>, kterß ulo₧φ aktußlnφ volbu do cookie (jejφ funkci si popφÜeme pozd∞ji).</p>
<p>Reklamnφ bannery zobrazuje v iframe aplikace, kterou jsme si vyrobili ji₧ d°φve. P°idßnφm atributu RunAt="server" jsme z n∞j vytvo°ili tzv. <a href='http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon/html/vbtskaddinghtmlcontrolstowebformspage.asp'>Html Control</a>. M∙₧eme tak nastavovat i vlastnost <em>Visible</em> skrze identifikßtor <em>Id</em>.</p>
<p>P°i prvnφm naΦtenφ strßnky (<a href='http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemWebUIPageClassIsPostBackTopic.asp'>IsPostBack</a> je <em>false</em>) provedeme v obsluze <a href='http://interval.cz/clanek.asp?article=1972' title='Jirava, Jaroslav: Äivotnφ cyklus ASP.NET strßnky'>Page_Load</a> pokus o nastavenφ zatrhßvacφho polφΦka podle ulo₧enΘ hodnoty v cookie. Vytvo°φme si novou instanci cookie a nastavφme ji na naÜi hodnotu z Request.Cookies. Pokud nenφ hodnota z cookie p°eΦtena (klient nepodporuje cookies nebo pou₧il naÜi aplikaci poprvΘ), bude naÜe cookie <em>null</em>. Pokud nenφ <em>null</em>, pou₧ijeme metodu <a href='http://msdn.microsoft.com/library/en-us/cpref/html/frlrfsystembooleanclassparsetopic.asp'>Boolean.Parse</a> pro zφskßnφ stavu zatr₧enφ checkboxu. Dßle potom provedeme p°eulo₧enφ hodnoty cookie volßnφm metody SaveCheckBoxStatus, Φφm₧ se dosßhne nejen ulo₧enφ aktußlnφho stavu checkboxu (zj. v p°φpad∞, ₧e jde o v∙bec prvnφ spuÜt∞nφ aplikace a naÜe cookie v∙bec neexistuje), ale takΘ obΦerstvenφ doby platnosti naÜφ cookie (v naÜφ aplikaci ji uklßdßme s platnostφ jeden rok).</p>
<p>P°i ka₧dΘm naΦtenφ strßnky nastavujeme viditelnost prvku iframe (zobrazuje reklamnφ bannery) podle hodnoty checkboxu, Φφm₧ docφlφme zobrazenφ nebo skrytφ banneru.</p>
<p>P°i kliknutφ na zatrhßvacφ polφΦko je volßna metoda <em>SaveCheckBoxStatus</em>. Vytvo°φme instanci cookie (v naÜem p°φkladu s jmΘnem <em>ckBanner</em>). Hodnotu tΘto cookie nastavφme na °et∞zec odpovφdajφcφ stavu zatrhßvacφho polφΦka. Dßle tΘto cookie nastavφme dobu expirace, zde na dobu jednoho roku. Nakonec metodou <a href='http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwebhttpcookiecollectionclassaddtopic.asp'>Add()</a> p°idßme cookie do <a href='http://msdn.microsoft.com/library/en-us/cpref/html/frlrfsystemwebhttpcookiecollectionclasstopic.asp'>kolekce cookies</a>, kterΘ aplikace odeÜle klientovi v <a href='http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwebhttpresponseclasscookiestopic.asp'>Response.Cookies</a>. Pokud si tedy obsah hlaviΦek, p°ipraven²ch k odeslßnφ klientovi, nesma₧eme nap°φklad nevhodn²m pou₧itφm <a href='http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemWebHttpResponseClassClearTopic.asp'>Response.Clear()</a>, ulo₧φ se cookie u klienta, a to je vÜe, Φeho jsme v aplikaci pot°ebovali dosßhnout.</p>
<p>Zde popsan² zp∙sob prßce s individußlnφmi cookies samoz°ejm∞ nenφ jedin², ASP.NET poskytuje i mnohem komplexn∞jÜφ t°φdu <a href='http://msdn.microsoft.com/library/en-us/cpref/html/frlrfsystemwebhttpcookiecollectionclasstopic.asp'>HttpCookieCollection</a> pro prßci s cookies v rßmci celΘ webovΘ aplikace. ASP.NET samo o sob∞ vyu₧φvß cookies pro uklßdßnφ dodateΦn²ch informacφ pro b∞h aplikace, nap°φklad identifikßtor session nebo pomocnΘ informace pro <a href='http://interval.cz/clanek.asp?article=1371' title='Kopp, Ond°ej: Jak zabezpeΦit aplikace v ASP.NET, 2. dφl'>forms autentizaci</a>. Prßce s nimi je u₧ ale na dalÜφ Φlßnek.</p>
<h4><a href='http://interval.cz/__redirect/redirect.asp?what=interval_booknews&url=http://interval.inshop.cz/inshop/scripts/detail.asp?ItemID=236'>NauΦte se ASP. NET za 21 dnφ</a></h4>
<li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3064'>Interval v roce 2004: Publish or perish!</a></li>
<li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3034'>Jak budovat a rozvφjet e-shop - transakce</a></li>
</ul>
</div>
</div>
<div class='page-right-box cauldron'>
<h3>Diskuznφ kotel</h3>
<div class='page-right-box-in'>
<ul>
<li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=2561'>Internet Explorer 7 se jmenuje MyIE2</a><div>149 komentß°∙ </div></li>
<li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=1304'>BezpeΦnost p°edevÜφm û include v PHP</a><div>95 komentß°∙ </div></li>
<li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=2965'>ImplementaΦnφ chyby v prohlφ₧eΦφch I.</a><div>59 komentß°∙ </div></li>