Embed
Email

asp-net

Document Sample

Categories
Tags
Stats
views:
0
posted:
11/19/2011
language:
Slovak
pages:
47
Dnes vám ukážu, jak vytvořit Hello world. Nejdřív vám napíšu kód a pak si jej vysvětlíme:































Tak, a jdeme vysvětlovat:









Vyberete si jazyk, ve kterém chcete programovat, kdybyste si zvolili VB.NET, tak by to

vypadalo takhle:









Dále:











Normální html tagy.









Těm, kteří už programovali v nějakém API, to není cizí – label = popisek. Na něj se bude

vypisovat text (pokud ho chceme mít někde umístěný). Každá komponenta v ASP.NET musí

být ukončena, proto tam je .





id="pozdrav"



To je název popisku. Když do něj budeme později chtít něco vypsat, budeme se řídit právě

názvem.





runat="server"

Toto znamená, že skript se má provést na straně serveru, než je ukázán uživateli.





text="HELLO WORLD!"



To je, myslím, jasné, je to text, který se má do popisku vypsat.



Pokud tvoříte v poznámkovém bloku, musíte při ukládání nastavit všechny soubory a jako

název napsat „nazev.aspx“. Potom jen otevřete váš prohlížeč a napíšete



http://localhost/nazev.aspx



Samozřejmě musíte uložit svou stránku do složky InetPub/wwwroot/, která je tam, kam jste ji

umístili při instalaci (nejčastěji na disku C).









Teď si ukážeme něco těžšího, nejdříve v C#:













void ukazPozdrav(object sender, EventArgs e){

pozdrav.Text = "HELLO WORLD!";





}











Hello World v ASP.NET!



















Veškerý skript se píše pod výběr jazyka, do tagu opět musíme napsat, že chceme,

aby se vše odehrávalo na straně serveru.

void ukazPozdrav(object sender, EventArgs e)



Když jsme klikli na tlačítko, které mělo odeslat funkci ukazPozdrav(), tak vykonej to, co je ve

složených závorkách.





pozdrav.Text = "HELLO WORLD!";



Nastavíme text popisku na „HELLO WORLD!“.









Tlačítko (button), název je „pozdravit“, popisek bude „pozdrav“ a při kliknutí (onClick)

proveď funkci ukazPozdrav(funkce je definována na začátku skriptu).



A teď ten samý skript ve VB:









Sub ukazPozdrav(sender As Object, e As EventArgs)

pozdrav.Text = "HELLO WORLD!"





End Sub











Hello World v ASP.NET!



















Je to skoro stejné jako u C#, až na pár výjimek:





Sub ukazPozdrav(sender As Object, e As EventArgs)

Namísto void se píše Sub (z Visual Basicu) a definice proměnných v závorce jsou naopak a je

mezi nimi As (jako) – Sender As Object (odesilatel jako objekt – viz další lekce

o proměnných).





End Sub



Ukončení funkce.









Komentáře



Komentáře slouží k tomu, aby byl kód přehledný a aby se v něm programátor vyznal. Na chod

programu nemají vůbec žádný vliv a kompilátor je automaticky přehlíží, ale je dobré je do

kódu psát, abyste se po nějaké době v kódu vyznali.



VB



Komentář se od kódu odděluje apostrofem.





Kód ‘komentář



C#



U C# máme 2 způsoby, jak komentář napsat. Buďto krátký:





Kód //komentář



Anebo dlouhý:





/* komentář na více

řádků */

kód.



To je pro dnešek vše, příště si řekneme něco o proměnných.

pokud jste již programoval/a v C++/C/Java/Visual Basic, tak tuhle část můžete rovnou

přeskočit, jelikož se nedozvíte nic nového.



Proměnné jsou datová uložiště, kam ukládáme hodnoty. Proměnných máme více typů,

nejpoužívanější jsou:



Visual Basic:



 Boolean: logická hodnota, vrací buď true, nebo false (pravda/lež)

 Byte : celá čísla 0-255

 Char: jeden znak

 Double: reálné číslo

 Single: reálné číslo (v menším rozsahu než Double)

 Integer: celé číslo

 Long: celé číslo (ve větším rozsahu než Integer)

 Object: základní datový typ. Ostatní datové typy jsou od něj odvozeny.

 Short: celé číslo (v menším rozsahu než Integer)

 String: řetězec znaků



C#:



 bool: logická hodnota, vrací buď true, nebo false (pravda/lež)

 byte: celá čísla 0-255

 char: jeden znak

 double: reálné číslo

 float: reálné číslo (v menším rozsahu než Double)

 int: celé číslo

 long: celé číslo (ve větším rozsahu než Int)

 object: základní datový typ. Ostatní datové typy jsou od něj odvozeny.

 short: celé číslo (v menším rozsahu než Int)

 String: řetězec znaků



Zápis proměnných:



Visual Basic:



Dim x as Integer



Teď jsme vytvořili novou proměnnou x typu Integer (celé číslo).



C#:



int x;



Vytvořili jsme to samé jako u VB.



Přiřazení hodnot:



Máme 2 možnosti, jak přiřadit proměnné nějakou hodnotu.

Způsob č. 1:



Dim x as Integer = 6



Popř. u C#:



int x = 6;



Teď jsme vytvořili proměnnou x a přiřadili jsme jí číslo 6.



Způsob č. 2:



Dim x as Integer

x = 6;



Popř. u C#:



int x;

x = 6;



Teď jsme vytvořili proměnnou x a až potom jsme jí přiřadili číslo 6.



A teď jednoduchý příklad:



Visual Basic:







Sub ukazJmeno(sender As Object, e As EventArgs)

Dim uzivatel as String

uzivatel = jmeno.Text

name.Text = "Takţe se jmenujete "+uzivatel





End Sub

















Zadejte vaše jméno:











Nejdříve si vytvoříme proměnnou uživatel typu string, pak do ní dáme hodnotu textového

pole "jmeno" a vypíšeme do label. A teď to samé pro C#:







void ukazJmeno(object sender,EventArgs e){

string uzivatel;

uzivatel = jmeno.Text;

name.Text = "Takţe se jmenujete "+uzivatel;





}

















Zadejte vaše jméno:













To je pro dnešek všechno



If/Else/ElseIf



If slouží jako podmínka, „Pokud něco platí, tak udělej tohle“.



Použití:



Visual Basic:



If podmínka Then

tak udělej tohle

End If



C#:



if(podmínka){

tak udělej tohle;

}



Příklad:

Visual Basic:



If x = 6 Then

Response.Write("x je 6!")

End If



C#:



if(x == 6){

Response.Write("x je 6");

}



Tady si musíte dávat pozor u C#, v podmínce if je 2× rovná se, to z toho důvodu, že

proměnné x nepřiřazujete žádné číslo, ale pouze srovnáváte hodnoty!



Else nám poslouží, když se nekoná podmínka. Je nepovinný, a pokud nebude v kódu uveden,

kód v podmínce if bude přeskočen.

Příklad:



Visual Basic:



If x = 6 Then

Response.Write("x je 6")

Else

Response.Write("x není 6")

End If



C#:



if(x == 6){

Response.Write("x je 6");

}

else{

Response.Write("x není 6");

}



Visual Basic.NET nabízí ještě jednu vychytávku, a to příkaz ElseIf:



If x = 6 Then

Response.Write("x je 6")

ElseIf x = 7 Then

Response.Write("x je 7")

Else

Response.Write("x není ani 6, ani 7!")

End If



ElseIf bohužel C# nemá, ale to moc nevadí, jelikož se dá nahradit vložením příkazu if do

příkazu else:

int x = 5;





if(x == 6){

Response.Write("x je 6!");

}

else{

if(x == 7){

Response.Write("x je 7");

}

else{

Response.Write("x neni 6 ani 7!");

}

}



Někdy určitě budete potřebovat zjistit podmínkou, jestli platí to a to, popřípadě to nebo to.

V tom případě je na místě použít logické operátory. Ve VB to jsou and (a) a or (nebo), v C# to

je && (a) a || (nebo).



Příklad:



Visual Basic:



Dim x as Integer = 6

Dim y as Inreger = 7





If x = 8 or y = 8 Then

Response.Write("X nebo Y je 8!")

End If



C#:



If(x == 8 || y == 8){

Response.Write("X nebo Y je 8!");

}





Cyklus For



Cyklus for použijeme, když chceme něco opakovat, než nějaká proměnná nabude určité

hodnoty:



Visual Basic:



For promenna = pocatecni hodnota To konec hodnota

prikazy v Cyklu….

Next promenna



C#:

for(promenna = pocatecni hodnota;ukoncovaci podmínka;zvetseni/zmenseni

promenne){

prikazy v Cyklu….

}



Příklad:



Visual Basic:



Dim i as Integer

For i = 1 To 6

Response.Write("Zdravím vás, dnes uţ po "+i.toString()+".")

Next i



Nastavíme proměnnou i hodnotu 1 a necháme ji opakovat, dokud není rovna hodnotě 6. Poté

necháme vypsat text a nakonec zvětšíme proměnnou o 1.



C#:



int i;





for(i = 1;i ");

}



Nejdříve nastavíme proměnnou i na 1, poté ji necháme opakovat dokud není menší nebo

rovna 6 a pak nastavíme, že se má hodnota i zvětšovat (i++ znamená i = i + 1). Následně už

jen vypíšeme text.



Není pro nás problém nastavit, aby se hodnota zmenšovala:



Visual Basic:



For i=6 To 1 Step -1

Response.Write("Zavodník uţ jede "+i.toString()+". kolo")

Next i



A v C#:



for(i = 6;i >= 1;i--){

Response.Write("Závodník uţ jede "+i+". kolo");

}



A nakonec jeden lehký příklad, kdybyste něco nepochopili:



Visual Basic:







Sub ukazJmena(sender As Object, e As EventArgs)





Dim i as Integer

Dim kolik as Integer

Dim jmeno as String

Dim opacne as String





jmeno = txtJmeno.Text

opacne = txtOpacne.Text

kolik = Int32.Parse(txtKolik.Text) //prevedeme ze String na

Integer





for i=1 To kolik

Response.Write("("+i.toString()+"): Jmenujete se

"+jmeno+"!")





Next i





Response.Write("")





if opacne = "0" Then

for i=kolik To 1 Step -1

Response.Write("("+i.toString()+"): Jmenujete se

"+jmeno+"!")





Next i





ElseIf opacne = "1" Then

Response.Write("::nepral jste si vypsat cyklus opacne::")





End If





Response.Write("")





End Sub

















Kolikrát chcete jméno vypsat:

Zadejte jméno, které chcete vypsat:

Chcete nechat cyklus vypsat opacne(0=ano,1=ne):











A to samé v C#:







void ukazJmena(object sender,EventArgs e){

int i,kolik;

string jmeno,opacne;





jmeno = txtJmeno.Text;

opacne = txtOpacne.Text;

kolik = Int32.Parse(txtKolik.Text); // prevedeme ze string na int





for(i=1;i");





}





Response.Write("");

if(opacne == "0"){

for(i=kolik;i>=1;i--){

Response.Write("("+i+"): Jmenujete se

"+jmeno+"!");





}

}

else{

if(opacne == "1"){

Response.Write("::nepral jste si vypsat cyklus opacne::");





}

}





Response.Write("");





}

















Kolikrat chcete jmeno vypsat:

Zadejte jméno, které chcete vypsat:

Chcete nechat cyklus vypsat opacne(0=ano,1=ne):











Doufám, že je vám to vše jasné, příště se podíváme na cykly while, do-while a příkaz switch.



do-while/do-loop-while



často se stává, že nevíme, kolikrát má cyklus proběhnout. V takovém případě nám poslouží

cyklus s podmínkou na konci, do-while.



C#





do{

příkazy v cyklu





}while(podmínka)



VB





Do

příkazy v cyklu





Loop While podmínka



Příkazy v cyklu se provádí tak dlouho, dokud podmínka nemá hodnotu TRUE.



Příklad



Jednoduchý příklad vypočítá, kolik má rok týdnů:



C#



void Page_Load(){

int tydenDni = 7;

int rokDni = 365;

int rokTydnu = 0;





do{

rokTydnu++;

tydenDni = tydenDni+7;

Response.Write("Rok nemá "+rokTydnu+" týdnů.

");

}while(tydenDni Vypíše se

Nazdar kamaráde

}



VB



Sub Pozdrav

Response.Write(„Nazdar kamaráde“)





End Sub





Sub Page_Load

Response.Write(„A nyní zavoláme naší proceduru Pozdrav(): „);

Pozdrav // nyní jsme zavolali proceduru Pozdrav => Vypíše se

Nazdar kamaráde

End Sub





Procedury s parametry



Většinou se stane, že činnosti, které chceme provádět uvnitř procedury, nejsou úplně stejné,

ale jsou trochu rozdílné. K tomu nám slouží parametry, jimiž lze ovlivňovat chování

procedury.



C#





void Pozdrav(string barvaTextu){

Response.Write(„Nazdar kamarade!

“);





}





void Page_Load(){

Pozdrav(„black“);

Pozdrav(„red“);

Pozdrav(„blue“);

Pozdrav(„green“);

}



Vytvořili jsme opět proceduru pozdrav. V závorce jsme vytvořili proměnnou typu string

barvaTextu a pak jsme s ní pracovali v proceduře. Při volání procedury jsme do závorky dali

řetězec s názvem barvy.



To samé ve VB.NET:





Sub Pozdrav(barvaTextu As String)

Response.Write(„Nazdar kamarade!

“)

End Sub





Sub Page_Load

Pozdrav(„black“)

Pozdrav(„red“)

Pozdrav(„blue“)

Pozdrav(„green“)

End Sub



Samozřejmě můžete v proceduře užít více parametrů. V takovémto případě oddělujete

parametry čárkou:



C#





void Pozdrav(string barvaTextu,int velikostTextu){

Response.Write(„Nazdar kamarade!

“);





}





void Page_Load(){

Pozdrav(„black“,5);

Pozdrav(„red“,10);

Pozdrav(„blue“,1);

Pozdrav(„green“,50);

}



VB





Sub Pozdrav(barvaTextu As String,velikostTextu As Integer)

Response.Write(„Nazdar kamarade!

“)





End Sub





Sub Page_Load

Pozdrav(„black“,5)

Pozdrav(„red“,10)

Pozdrav(„blue“,1)

Pozdrav(„green“,50)

End Sub

Funkce:



Jak jsem říkal na začátku, mezi procedurami a funkcemi není skoro žadný rozdíl, proto si teď

ukážeme pouze jednoduchý příklad funkce:



C#





string Odkaz(string kam,string text){

string x;

x = "

 "+text+"";





return x;

}





void Page_Load(){

Response.Write(Odkaz("www.programujte.com","e-zin

programujte")+Odkaz("www.atlas.cz","atlas.cz"));



Response.Write(Odkaz("www.centrum.cz","Centrum.cz")+Odkaz("www.seznam.cz",

"seznam"));

}



Všiměte si, že když vytváříme funkci Odkaz, už není void, ale string. To z toho důvodu, že

funkce vrací hodnotu typu string. Dále je tam důležitý příkaz return, tím definujeme, kterou

hodnotu vracíme. V našem případě to je proměnná x. Pokud bychom na příkaz return

zapomněli, překladač by nahlásil chybu.



VB





Function Odkaz(kam As String,text As String)As String

Dim x As String

x = "

 "+text+""





Return x

End Function





Sub Page_Load

Response.Write(Odkaz("www.programujte.com","e-zin

programujte")+Odkaz("www.atlas.cz","atlas.cz"))



Response.Write(Odkaz("www.centrum.cz","Centrum.cz")+Odkaz("www.seznam.cz",

"seznam"))

End Sub

Ve VB.NET se funkce vytváří pomocí klíčových slov Function a End Function. Stejně jako

u C# musíme definovat typ návratové hodnoty (v našem případě string).



To je pro dnešek vše. Příště se podíváme na objekty.



Objekty

objekty jsou bloky vzájemně souvisejících dat. Každý objekt má v sobě skupinu proměnných,

které obsahují informace o objektu. Kromě proměnných může objekt obsahovat také

procedury, nebo funkce (metody objektu).



Vytvoření třídy



Vytvoříme si třídu fotbalista, do které se budou zapisovat informace o fotbalistovi.



C#





class fotbalista{

public string jmeno;

public string prijmeni;

public int cisloDresu;

public bool aktivni;

}



VB





Class fotbalista

public jmeno As String

public prijmeni As String

public cisloDresu As Integer

public aktivni As Boolean

End Class



Nyní jsme vytvořili třídu fotbalista. Možná se ptáte, proč je před proměnnou slovo public.

Tímto slovem definujeme, že proměnná bude veřejná, takže ji budeme moci použít i v jiných

procedurách/funkcích.



Třídu máme vytvořenou, teď ji použijeme:



C#





class fotbalista{

public string jmeno;

public string prijmeni;

public int cisloDresu;

public bool aktivni;

}





void Page_Load(){

fotbalista baros = new fotbalista();

fotbalista panenka = new fotbalista();

string bAktiv,pAktiv;





baros.jmeno = „Milan“;

baros.prijmeni = „Baroš“;

baros.cisloDresu = 11;

baros.aktivni = true;





panenka.jmeno = „Antonín“;

panenka.prijmeni = „Panenka“;

panenka.cisloDresu = 0;

panenka.aktivni = false;





bAktiv = baros.aktivni ? „ je aktivní“ : „není aktivní“;

pAktiv = panenka.aktivni ? „je aktivni“ : „není aktivni“;





Response.Write(baros.jmeno+“ „+baros.prijmeno+“(„+baros.cisloDresu+

“) „+bAktiv+“

“);

Response.Write(panenka.jmeno+“ „+panenka.prijmeno+“(„+panenka.cislo

Dresu+“) „+pAktiv+“

“);

}



VB





Class fotbalista

public jmeno As String

public prijmeni As String

public cisloDresu As Integer

public aktivni As Boolean

End Class





Sub Page_Load

Dim baros As fotbalista = new fotbalista()

Dim panenka As fotbalista = new fotbalista()

Dim bAktiv As String

Dim pAktiv As String





baros.jmeno = "Milan"

baros.prijmeni = "Baroš"

baros.cisloDresu = 11

baros.aktivni = true





panenka.jmeno = "Antonín"

panenka.prijmeni = "Panenka"

panenka.cisloDresu = 0

panenka.aktivni = false





If baros.aktivni Then

bAktiv = " je aktivní"





Else

bAktiv = "není aktivní"





End If





If panenka.aktivni Then

pAktiv = "je aktivni"





Else

pAktiv = "není aktivni"





End If





Response.Write(baros.jmeno+"

"+baros.prijmeni+"("+baros.cisloDresu.toString()+") "+bAktiv+"

")

Response.Write(panenka.jmeno+"

"+panenka.prijmeni+"("+panenka.cisloDresu.toString()+") "+pAktiv+"

")

End Sub



Lehké, že? Vytvoříte třídu, pak ji použijete jako proměnnou, a to z toho důvodu, že proměnné

jsou také objekty, akorát příkaz new za nás přidá překladač.



Tak, a to je vše z našeho úvodu do objektů. Možná někdy příště si toho o objektech řekneme

víc. Příšte budeme probírat session a cookies.



Session



Session slouží k dočasnému ukládání dat o uživateli nebo o stavu aplikace. Například máte na

stránkách volbu barvy pozadí. Uživatel si vybere nějakou barvu a klikne na OK. Barva se mu

změní, ale jakmile uživatel klikne na další odkaz, barva se mu nastaví na přednastavenou,

protože server neví, jestli se jedná pořád o toho samého uživatele, nebo jestli to není někdo

jiný. A právě k tomu slouží session.



Přidávání hodnot do session



Novou hodnotu můžete do session načíst pomocí metody Add:

C# i VB (samozřejmě bez středníku)



Session.Add(nazev_hodnoty,hodnota);



Anebo to můžete zadat takto:



C#



Session[nazev_hodnoty] = hodnota;



VB



Session(nazev_hodnoty) = hodnota



Pokud budeme později chtít zavolat session s danou hodnotou, uděláme to takhle:



C#



Session[nazev_hodnoty];



U VB.NET to bude stejně, akorát místo hranatých závorek budou kulaté a nebude tam

středník.



Onen příklad s barvou:



C#













string[] seznamBarev =

{"Modrá","Ţlutá","Zelená","Oranţová","Červená"}; //nastavime obsah

seznamu barev do pole

string barvaKod = ""; // vytvorime promennou do ktere budeme

ukladat kod barev





void Page_Load(){

if(!IsPostBack){ //pokud je stranka načtena poprvé

dlBarva.DataSource = seznamBarev; // tak do seznamu dlBarva

volţíme obsah pole seznamBarev

dlBarva.DataBind(); // a aktualizujeme seznam

}

}





void ulozitBarvu(object sender,EventArgs e){





barvaKod = "";

switch(dlBarva.SelectedIndex){ // zjistime kterou polozku si

uzivatel vybral

case 0 : barvaKod = "4448B7"; break; // a podle toho nacteme

do promenne barvaKod kód barvy..

case 1 : barvaKod = "D7CF52"; break;

case 2 : barvaKod = "4A842B"; break;

case 3 : barvaKod = "F49D22"; break;

case 4 : barvaKod = "EA2824"; break;

}





Session.Add("bPozadi",barvaKod); // a pote ulozime kod barva do

Session bPozadi

}













'>

















stranka 2

















object pozadi; // vytvorime promennou typu object





void Page_Load(){





if(Session["bPozadi"] != null){ // pokud Session bPozedi neni

prazdna

pozadi = Session["bPozadi"]; // tak vlozime do promenne pozadi

obsah Session bPozadi





}

else{ // jinak..

pozadi = "FFFFFF"; // nastavime pozadi na bilou

barvu..

}

}









'>

Stránka 2..

Stranka 1







VB













Dim seznamBarev As String() =

{"Modrá","Ţlutá","Zelená","Oranţová","Červená"} 'nastavime obsah seznamu

barev do pole

Dim barvaKod As String = "" ' vytvorime promennou do ktere budeme

ukladat kod barev





Sub Page_Load

If IsPostBack = False Then 'pokud je stranka načtena poprvé

dlBarva.DataSource = seznamBarev ' tak do seznamu dlBarva

volţíme obsah pole seznamBarev

dlBarva.DataBind() ' a aktualizujeme seznam

End If

End Sub





Sub ulozitBarvu(sender As object,e As EventArgs)





barvaKod = ""

Select dlBarva.SelectedIndex ' zjistime kterou polozku si

uzivatel vybral

case 0

barvaKod = "4448B7" ' a podle toho nacteme do promenne

barvaKod kód barvy..

case 1

barvaKod = "D7CF52"

case 2

barvaKod = "4A842B"

case 3

barvaKod = "F49D22"

case 4

barvaKod = "EA2824"

End Select





Session.Add("bPozadi",barvaKod) ' a pote ulozime kod barva do

Session bPozadi

End Sub













'>













stranka 2





















Dim pozadi As Object ' vytvorime promennou typu object





Sub Page_Load





if Session("bPozadi") Nothing Then ' pokud Session bPozedi

neni prazdna

pozadi = Session("bPozadi") ' tak vlozime do promenne pozadi

obsah Session bPozadi





Else ' jinak..

pozadi = "FFFFFF" ' nastavime pozadi na bilou

barvu..





End If

End Sub













'>

Stránka 2..

Stranka 1











Když si nyní vybereme některou barvu, dáme OK a klikneme na odkaz, další stránka bude mít

stejnou barvu jako ta předešlá. Ovšem když zavřeme prohlížeč a potom opět najedeme na naši

stránku, barva pozadí bude opět původní a barva na další stránce bude bílá. To je z toho

důvodu, že stránky ztratí kontakt se serverem, session se vymaže. Pokud bychom chtěli, aby

se informace uchovaly, musíme k tomu použít cookies.









Cookies



Cookies jsou malé soubory, které jsou uloženy na uživatelově pevném disku a do kterých

můžeme ukládat potřebné informace. Pozor si musíme dávat na to, že uživatel může mít ve

svém prohlížeči používání cookies zakázáno, a v tom případě mu naše aplikace fungovat

nebude.



Vytvoření cookies



C#



Response.Cookies[nazev_hodnoty].Value = hodnota;



Ve VB.NET je to stejné, s tím rozdílem, že hranaté závorky jsou nahrazeny kulatými a

odděláme středník.



Pokud budeme chtít cookies později zavolat, uděláme to takhle:



C#



Response.Write(Request.Cookies[„nazev_hodnoty“].Value);



U VB.NET je to stejné, opět s tím rozdílem, že hranaté závorky jsou nahrazeny kulatými a

odděláme středník.



Doba trvání

Cookies jsou v uživatelově počítači uloženy pouze dočasně, po uplynutí nějaké doby jsou

z něj automaticky smazány. Dobu pobytí v počítači určuje nastavení vlastnosti expired, která

je typu DateTime.



C#



DateTime dobaPlatnosti = new DateTime.Now;





dobaPlatnosti.AddDays(5);

Response.Cookies[„nazev_hodnoty“].Expired = dobaPlatnosti;



VB



Dim dobaPlatnosti As DateTime = new DateTime.Now





dobaPlatnosti.AddDays(5)

Response.Cookies(„nazev_hodnoty“).Expired = dobaPlatnosti



Nyní jsme cookie s názvem nazev_hodnoty nastavili dobu platnosti dní.



Ukládání více hodnot



Pokud chceme do jednoho „koláčku“ uložit více hodnot, zaměníme pouze slovo .Value

za .Values:



C#



Response.Cookies[„stranka“].Values[„url“] = „www.programujte.com“;

Response.Cookies[„stranka“].Values[„zakladatel“] = „Curo“;



Ve VB.NET je to opět stejné, až na známé výjimky.



A to je pro dnešek vše. Ještě si můžete zkusit jen tak pro sebe vytvořit náš příklad s barvami

pozadí s pomocí cookies.

Export obsahu webovej stránky do nejakého formátu za účelom uloženia je užitočnou

funkciou napríklad aj tohto e-zinu. Implementácia exportu v technológii ASP.NET s použitím

jazyka C# je jednoduchá záležitosť, ako je to možné vidieť na nasledujúcich riadkoch.



Stránka a obsah

Vo väčšine prípadoch sa neexportuje celá stránka kvôli postranným panelom, ako je napríklad

menu. Potrebný obsah je preto najlepšie mať predformátovaný, a tak pripravený na možnosť

jeho exportu ako nezávislej časti. Jeden zo spôsobov, ako to dosiahnuť, je napríklad použitie

http://msdn2.microsoft.com/en-us/library/y6wb1a0e(VS.71).aspx">User controlu alebo

PlaceHolderu .



Príklad exportu ovládacieho prvku



Majme nasledujúci kúsok kódu, v ktorom chceme exportovať tabuľku do HTML súboru po

kliknutí na button:







1

2

3





4

5

6





7

8

9



















V globále sa získanie požadovaného obsahu zo stránky deje na základe ID ovládacieho prvku

a StringWriteru . Prvok sa nechá vyrenderovať pomocou metódy RenderControl do objektu

typu HtmlTextWriter , ktorému sa určí StringWriter ako parameter pri vytváraní objektu.



System.IO.StringWriter sw = new System.IO.StringWriter();

HtmlTextWriter hw = new HtmlTextWriter(sw);

tblToExport.RenderControl(hw);

Teraz je tabuľka v objekte sw. Spojazdnenie samotného exportu sa skladá zo zopár úkonov

s triedou



protected void btnExport_Click(object sender, EventArgs ea) { // vycisti buffer

Response.Clear(); // urcenie typu obsahu Response.ContentType = "text/html"; // kodovanie

obsahu Response.ContentEncoding = System.Text.Encoding.UTF8; // zahlavie

Response.AddHeader("content-disposition", "attachment;filename=table.html"); // ziskanie

obsahu prvku System.IO.StringWriter sw = new System.IO.StringWriter(); HtmlTextWriter

hw = new HtmlTextWriter(sw); tblToExport.RenderControl(hw); // zapis do vystupneho

prudu Response.Write(sw.ToString()); // ukoncenie Response.End(); }



V záhlaví je prvý parameter názov HTTP headera, do ktorého sa následne pridá hodnota

predstavujúca druhý parameter. V tomto prípade ide o prílohu s názvom súboru table.html.



Ako typ obsahu sa dá určiť napríklad "application/ms-excel" a prípona súboru .xls. Týmto

spôsobom bude exportovaný súbor možné otvoriť v Exceli, ktorý html syntax prekonvertuje

na svoje použitie (aj keď sa nebude jednať priamo o excelovský súbor vzhľadom na to, že

excel vytvára binárne súbory).

Polia znakov a čísel, čiže reťazce, majú v C# rôzny druh zápisu a dajú sa ľahko formátovať

podľa vlastných potrieb. Často sa pri vývoji môžeme stretnúť s problémom, napr. vypísať

niekoľkomiestnu číselnú hodnotu tak, aby bola rozdelená po troch cifrách (10000000 -> 10

000 000). Riešenie tohto problému, ale aj mnohých iných sa bude nachádzať v tomto článku.



Metódy ako napr. http://msdn.microsoft.com/library/default.asp?url=/library/en-

us/cpref/html/frlrfsystemconsoleclasswritelinetopic1.asp">Console.WriteLine alebo

String.Format slúžiace na výpis a formátovanie reťazcov poskytujú užitočné vlastnosti. Pri

uvedení jednoduchého príkladu



int chlapci = 15;

int dievcata= 20;

Console.WriteLine("Pocet chlapcov: {0} Pocet dievcat: {1}", chlapci,

dievcata);

je vidno, že hodnoty premenných sú vypísané na mieste zložených zátvoriek s indexom, ktorý

určuje poradové číslo premennej. To isté umožňuje metóda String.Format, ktorú v

nasledujúcom kóde použijeme pri výpise reťazca do SubItemu v ListView (obrázky pod

zdrojovými kódomi majú len informatívny charakter)



int ucet = 60000;

item.SubItems.Add(String.Format("{0}", ucet));

Tu nastáva menší problém s formátom vypísanej hodnoty, ktorá je na prvý pohľad zle

čitateľná. Lepšie by bolo, ak by táto hodnota bola rozdelená po troch cifrách čím by sa zlepšil

vzhľad aj čitateľnosť



int ucet = 60000;

item.SubItems.Add(String.Format("{0:n0}", ucet));









Tým že sa v zložených zátvorkách za indexom premennej pridal špecifikátor ":n0" sme určili

formát výpisu hodnoty premennej v ListView a výsledok je prijateľnejši ako v prvom prípade.

Pri spätnej konverzii z upraveného formátu (60 000) na pôvodný sled čísel (60000) je hodnota

oddelená na tisícky braná ako string, nie ako číslo. Preto sa táto hodnota premieňa späť na

číslo pomocou metódy Parse .



String myString = "60 000";

Console.WriteLine(myString);





int x = int.Parse(myString,

System.Globalization.NumberStyles.AllowThousands);

Console.WriteLine(x);

Samozrejme C# obsahuje celú sadu rôznych formátov zobrazenia. Niektoré z nich sú uvedené

nižšie v tabuľkách.



Špecifikátor Popis Formát Vstup Výstup

c mena (peniaze) {0:c} 500 500,00 SK

d Celé číslo {0:d} 500 500

e Vedecké číslo {0:e} 500 5,000000e+002

f Pevná rádová bodka {0:f} 500 500,00

g Všeobecný formát {0:g} 500 500

n Číslo s medzerami (alebo čiarkami) po tisícoch {0:n} 50000 50 000,00

r Round trippable {0:r} 3,14 3,14

x Hexadecimálna hodnota {0:x4} 500 1F4





C# taktiež podporuje vytváranie vlastných formátovaní.



Špecifikátor Popis Formát Vstup Výstup

0 Vyplňuje nulami {0:00.0000} 3,14 03,1400

# Uzatvorí číslo {0:(#).##} 3,14 (3),14

. Desatinná bodka so zaokrúhlením {0:0.0} 3,14 3,1

, Oddeľovač tisíciek {0:0,0} 50000 50 000

,. Zmena veľkosti čísla {0:0,.} 50000 50

% Percento {0:0%} 3,14 314%

e Exponent {0:00e+0} 3,14 31e-1





Uvedené tabuľky neobsahujú všetky podporované formátovacie znaky a možnosti.

Doplňujúce informácie:



Zložené formátovanie

Štandardné formátovanie čísel

Vlastné formátovanie čísel

Štandardné formátovanie dátumu a času

init()

jeden z nejčastěji pokládaných dotazů začínajících .NET vývojářů se týká odesílání e-mailů,

proto se vás v následujících několika dílech pokusím s metodami odesílání e-mailů

v prostředí .NET seznámit. Zpočátku se dozvíte něco o odesílání běžných zpráv, o metodách

odesílání a jejich konfiguraci.



Vytvoření a odeslání zprávy



Zprávu vytvoříte vytvořením nové instance třídy http://msdn2.microsoft.com/en-

us/library/system.net.mail.mailmessage.aspx">System.Net.Mail.MailMessage – základní

údaje o zprávě můžete nastavit přímo v jejím konstruktoru. V jednom z konstruktorů jsou

požadovány 2 parametry typu System.Net.Mail.MailAddress – tato třída umožňuje zadat

kromě e-mailové adresy i zobrazované jméno s jistotou, že se ve zprávě správně zakóduje.





public void SendMail()

{

// vytvoření nové zprávy

System.Net.Mail.MailMessage message = new

System.Net.Mail.MailMessage(new

System.Net.Mail.MailAddress("odesilatel@mail.cz", "Odesílatel"), new

System.Net.Mail.MailAddress("prijemce@mail.cz", "Příjemce"));

// přiřazení dalšího příjemce - tímto bude mít zpráva 2 příjemce

message.To.Add(new System.Net.Mail.MailAddress("prijemce2@mail.cz",

"Příjemce2"));





// předmět zprávy

message.Subject = "Předmět zprávy";

// tělo zprávy

message.Body = "Tělo zprávy";

// určení typu zprávy

message.IsBodyHtml = true;





// vytvoření SMTP klienta

System.Net.Mail.SmtpClient smtp = new

System.Net.Mail.SmtpClient("smtp.mail.cz", 25);

// pokud je to potřeba, můţete provést přihlášení k SMTP serveru

smtp.Credentials = new System.Net.NetworkCredential("Username",

"Password");

// nastavení metody odesílání

smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;

// můţete povolit nebo zakázat zabezpečené odeslání - některé SMTP

servery nedovolují zabezpečené připojení

smtp.EnableSsl = false;

// odeslání vytvořené zprávy

smtp.Send(message);

}

K odesílání zprávy slouží třída System.Net.Mail.SmtpClient . Třída mimo jiné umožňuje

přihlášení k SMTP serveru, které probíhá prostřednictví třídy System.Net.NetworkCredential

. Vlastnost DeliveryMethod, která je typu SMTP server dovolí, můžete přes vlastnost

EnableSsl povolit zabezpečené odesílání zpráv.



Metody odesílání a jejich konfigurace



PickupDirectoryFromIis

Výchozí metoda, která použije mail pickup service lokálního IIS. K odeslání zprávy

nemusí dojít, když .NET Framework není schopen načíst konfiguraci z IIS nebo když

na serveru nejsou zapnuté SMTP services. Nepotřebuje žádné zvláštní nastavení.

SpecifiedPickupDirectory

Hodí se k vyřešení problému s načítáním konfigurace u předchozí metody, nebo když

vlastně žádné e-maily posílat nechcete. Musíte specifikovat, jaký adresář se má použít,

většinou C:\Inetpub\mailroot\Pickup.



























Network

Mnou preferovaná metoda, která k odeslání použije jakýkoliv SMTP server, který vám

odeslání dovolí. Většinou je potřeba se přihlásit. Musíte specifikovat alespoň adresu

SMTP serveru. Tato metoda funguje prakticky pokaždé.























Pod popisem metody je uveden příklad konfigurace, která probíhá v konfiguračním souboru

aplikace – app.config v případě klientské aplikace a web.config v případě webové aplikace.



Závěrem



To je v 1. dílu vše, pokud vám tu něco podstatného chybí, neváhejte se zeptat v komentářích.

Příště se dozvíte, jak správně odesílat přílohy a jak zobrazovat obrázkové přílohy v těle

zprávy, aby je následně zobrazil každý klient pracující s HTML zprávami.







dnes přímo navážu na předchozí díl a ukážu vám, jak snadné je odesílat e-maily s přílohami,

jak zobrazovat přiložené obrázky v těle e-mailu a jak nastavit správný MIME typ přílohy pro

zajištění správného zobrazení ve všech e-mailových kilentech.



Odesílání příloh



Klasickou přílohu reprezentuje třída http://msdn2.microsoft.com/en-

us/library/system.net.mail.attachment.aspx">System.Net.Mail.Attachment , přes kterou

můžete připojit fyzický soubor nebo objekt typu



// vytvoření nové přílohy System.Net.Mail.Attachment atach = new

System.Net.Mail.Attachment("c:/soubor.jpg"); // nastavení MIME typu

atach.ContentType.MediaType = System.Net.Mime.MediaTypeNames.Image.Jpeg; //

přiložení přílohy do zprávy message.Attachments.Add(atach);



Velmi důležité je správné určení MIME typu přílohy – zabráníte tak možným komplikacím

při zobrazování na straně klienta.





Nezapomínejte správně určit MIME typ přílohy, můžete tak zabránit

případným chybám v zobrazení na straně klienta.



Zobrazení obrázku v těle e-mailu



Možná vás někdy zajímalo, jak vlastně fungují obrázkové propagační e-maily, spamy, když

žádný obrázek není umístěn na externím serveru ani jako běžná příloha. Vše spočívá v tom, že

zvláštnímu typu přílohy přiřadíte určité ContentId a následně zobrazíte obrázek

v HTML zprávě.





public void SendMail()

{

// vytvoření nové zprávy

System.Net.Mail.MailMessage message = new

System.Net.Mail.MailMessage(new

System.Net.Mail.MailAddress("odesilatel@mail.cz", "Odesílatel"), new

System.Net.Mail.MailAddress("prijemce@mail.cz", "Příjemce"));

// přiřazení dalšího příjemce - tímto bude mít zpráva 2 příjemce

message.To.Add(new System.Net.Mail.MailAddress("prijemce2@mail.cz",

"Příjemce2"));





// předmět zprávy

message.Subject = "Vloţený obrázek";

// určení typu zprávy

message.IsBodyHtml = true;





// přilinkování obrázku

System.Net.Mail.LinkedResource lres = new

System.Net.Mail.LinkedResource(@"C:\soubor.jpg");

// přiřazení ContentId

lres.ContentId = "img";

// nastavení MIME typu

lres.ContentType.MediaType =

System.Net.Mime.MediaTypeNames.Image.Jpeg;





// vytvoření alternativního zobrazení zprávy

System.Net.Mail.AlternateView aview =

System.Net.Mail.AlternateView.CreateAlternateViewFromString(@"Tělo

zprávy.", null, "text/html");

// přiloţení přilinkovaného obrázku

aview.LinkedResources.Add(lres);





// přiloţení alternativního zobrazení ke zprávě

message.AlternateViews.Add(aview);





// vytvoření SMTP klienta

System.Net.Mail.SmtpClient smtp = new

System.Net.Mail.SmtpClient("smtp.mail.cz", 25);

// pokud je to potřeba, můţete provést přihlášení k SMTP serveru

smtp.Credentials = new System.Net.NetworkCredential("Username",

"Password");

// nastavení metody odesílání

smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;

// můţete povolit nebo zakázat zabezpečené odeslání - některé SMTP

servery nedovolují zabezpečené připojení

smtp.EnableSsl = false;

// odeslání vytvořené zprávy

smtp.Send(message);

}







Znovu jsem uvedl celý kód, abyste se mohli podívat na změny. Obrázek není připojený jako

běžná příloha, ale jako http://msdn2.microsoft.com/en-

us/library/system.net.mail.linkedresource.aspx">System.Net.Mail.LinkedResource , který se

u klienta nezobrazí v seznamu příloh. I v tomto případě je dobré nastavit správný MIME typ.

Není klasicky uvedené tělo zprávy message.Body, protože je vytvořený objekt MIME typ.

Obrázek ve zprávě zobrazjete bežným tagem.





Jako src zvolte prefix cid: a následně ContentId, které jste přiřadili vašemu obrázku, v tomto

případě je to img.



Závěrem



To je všechno, co jsem vám chtěl sdělit. Vaše dotazy pište do komentářů – mohou mě

inspirovat k napsání dalšího dílu tohoto krátkého seriálu.

občas se stává, že je nutné z nějakého textu odstranit znaky s diakritikou. Většinou není

požadováno jejich úplné odstranění, ale nahrazení za jejich ekvivalenty bez diakritiky, aby

text zůstal čitelný. V .NET 2.0 je řešení celého problému snadnější, než se může zdát.



Ve starších verzích .NET by bylo nutné vytvořit seznam písmen s diakritikou a k nim přiřadit

jejich ekvivalenty. Následně by pak docházelo k postupnému nahrazování písmen v textu, ale

toto řešení není příliš spolehlivé, protože většinou nevytvoříte kompletní seznam všech

existujících znaků s diakritikou. V .NET 2.0 je naštěstí možné pracovat s tzv. Unicode(Normy,

které mají učinit počítače použitelnými pro včechny jazyky a odstranit problémy původně

osmibitové znakové sady.) kategoriemi.



S pomocí níže uvedené metody se oddělí znak od jeho modifikátoru, zkontrolují se všechny

znaky a ze znaků, které nejsou modifikátory, se sestaví nový řetězec. Nebudu vysvětlovat, co

znamenají všechny modifikátory metod, návratový typ a další klíčová slova – to je úkolem

lektora zdejšího kurzu jazyka C#.





public static string RemoveDiacritics(String s)

{

// oddělení znaků od modifikátorů (háčků, čárek, atd.)

s = s.Normalize(System.Text.NormalizationForm.FormD);

System.Text.StringBuilder sb = new System.Text.StringBuilder();





for (int i = 0; i



V předešlém kódu je důležitá především závěrečná sekce, kde používáme

Server.Transfer("/clanek.asp") pro přechod na stránku, která zajišťuje

zobrazení článku. Pro předání ID článku musíme použít sessions a nikoli řetězec s

parametrem za otazníkem jako v běžném URL, protože to IIS nedovoluje (nebo alespoň první

verze, zvládající tento druh interního přesměrování). Použití Server.Transfer zajistí, že se

nám vypíše výstup skriptu "clanek.asp" aniž by došlo ke změně URL, což je přesně to, k

čemu jsme celý čas směřovali.



Výhody a nevýhody



Výhoda popsaného postupu je zřejmá - získáme čitelné URL, odkazující na statické stránky,

což nám otevírá cestu mezi oblíbence vyhledávačů. Nevýhoda je také zřejmá - je jí zvýšená

zátěž serveru, který musí provést mnohem více operací a několik SQL dotazů navíc, a také

prodloužená doba odezvy, tedy doby, uplynuvší mezi kliknutím na odkaz a zobrazením

obsahu stránky. Je tedy na místě pečlivě zvážit, co je pro nás důležitější nebo co nás více

omezuje.



Pokud už se rozhodnete na svém webu "zkrášlená" URL použít, doporučuji vám považovat

skript z tohoto článku pouze za vzor a upravit jej podle vlastního vkusu a potřeb. Nebylo by

od věci zakomponovat do URL třeba názvy kategorií a rubrik, aby se tak zvýšila váha odkazu

pro slova v něm obsažená. Nejdůležitější ze všeho je ale zabezpečení skriptu, jednak proti

selhání vlivem prostého omylu či překlepu a druhak proti cíleným záškodnickým akcím.



Related docs
Other docs by Stariya Js @ B...
How we become literate
Views: 0  |  Downloads: 0
15189
Views: 0  |  Downloads: 0
Enrollment Agreement
Views: 0  |  Downloads: 0
seddc 061009 pm
Views: 0  |  Downloads: 0
Juvanec-KamenNaKamen-eng
Views: 0  |  Downloads: 0
Syllabus Macro Fall 10
Views: 0  |  Downloads: 0
23401
Views: 0  |  Downloads: 0
9-11-RPH-stonefabrication-ord-memo-agss
Views: 0  |  Downloads: 0
Junior_Pre_season_Soccer_League_application
Views: 0  |  Downloads: 0
guide_to_moodle_quizzes
Views: 0  |  Downloads: 0
By registering with docstoc.com you agree to our
privacy policy

You are almost ready to download!

You are almost ready to download!