Title: Zaawansowane aplikacje internetowe – ASP.NET 2.0 / 3.5
1Zaawansowane aplikacje internetowe ASP.NET 2.0
/ 3.5
- Prowadzacy Jaroslaw Kurek
- kurekj_at_iem.pw.edu.pl
2Agenda
- I Przypomnienie architektury .NET
- II Podstawy witryny internetowej
- III Walidacja
- IV Dane i dostep do danych
3I. Architektura platformy .NET
4I. Architektura platformy .NET
- Nowosci w ASP.NET 2.0
- Ponad 40 nowych kontrolek w porównaniu z 1.1
- Strony wzorcowe (Master Pages)
- Motywy graficzne (Themes)
- mechanizmy autoryzacji, ról i konfiguracji,
- (ASP.NET Membership Provider).
- Kontrolki Data source
- Kontrolki Web Parts
- Profile uzytkownika (Profiles)
5I. Architektura platformy .NET
- Nowosci w Framework 3.0
- WPF (Windows Presentation Foundation)
- WCF (Windows Communication Foundation)
- WF (Windows Workflow Foundation)
- Skok z ASP.NET 2.0 -gt ASP.NET 3.5 bo
- Framework 3.0 nie wprowadzil nowego CLR
- Framework 3.0 nie wprowadzil nowego ASP.NET
6I. Architektura platformy .NET
- Nowosci w ASP.NET 3.5
- LINQ (Language Integrated Query)
- ASP.NET AJAX
- Korzysta z silnika ASP.NET 2.0
- SilverLight
- Zestawy algorytmów kryptograficznych
- Korzysta nawet z katalogu ASP.NET podczas
cachowania - C\WINDOWS\Microsoft.NEt\Framework\v2.0.50727\Temp
orary ASP.NET Files
7 Framework 4.0 (wkrótce)
Wiecej na posterze pod linkiem PlakatNETFX4.pdf
8I. Architektura platformy .NET
- Nowosci w Visual Studio .NET 2008
- Projectless vs project-based
- Wybór wersji ASP.NET 2.0/3.5 (multitargeting)
- Latwiejsza obsluga CSS (Cascading Style Sheets)
9II. Podstawy witryny internetowej ASP.NET 2.0
- Struktura klasy Page,
- Kod z trescia oraz kod ukryty (separacja warstw),
- Metody przekierowania do innej strony
- Metody przesylanie danych pomiedzy stronami,
- Automatyczny postback (autopostback)
- Cykl zyciowy strony,
101. Struktura klasy Page
- Strona plik (.aspx)
- Plik .aspx- plik z trescia wizualna
zawartosc strony (HTMLkontrolki ASP.NET) - Plik .aspx.cs (C) aspx.vb (VB) kod ukryty
code behind - Elementy HTML nie sa przetwarzane przez serwer
platformy .NET (chyba , ze runat server) - Pierwsze zadanie strony- kompilacja JIT platformy
.NET klasy uzytkownika - Klasa uzytkownika wywodzi sie z
System.Web.UI.Page
111. Struktura klasy Page c.d.
- Klasa kompilowana do podzespolu (buforowany w
pamieci serwera) - Kolejne zadania z bufora (brak kompilacji)
- Nazwa klasy np. _Default moze byc rózna od nazwy
pliku z trescia np. _Default1.aspx - W pierwszej linijce strony .aspx - dyrektywa
strony -
121. Struktura klasy Page c.d.
Wlasciwosci klasy Page 3.5
- Application
- AppRelativeVirtualPath
- AsyncTimeout
- BindingContainer
- Buffer
- Cache
- ClientID
- ClientQueryString
- ClientScript
- ClientTarget
- CodePage
- ContentType
- Controls
- Culture
- EnableEventValidation
- EnableTheming
- EnableViewState
- EnableViewStateMac
131. Struktura klasy Page c.d.
Wlasciwosci klasy Page 3.5
- ErrorPage
- Form
- Header
- ID
- IdSeparator
- IsAsync
- IsCallback
- IsCrossPagePostBack
- IsPostBack
- IsReusable
- IsValid
- Items
- Master
- MasterPageFile
- Page
- Parent
- PreviousPage
- Request
141. Struktura klasy Page c.d.
Wlasciwosci klasy Page 3.5
- Response
- ResponseEncoding
- Server
- Session
- SkinID
- StyleSheetTheme
- Theme
- Title
- Trace
- TraceEnabled
- User
- Validators
- ViewStateEncryptionMode
- ViewStateUserKey
- Visible
152. Kod z trescia oraz kod ukryty
- Dwa podejscia pisania stron ASP.NET
- Tylko jeden plik .aspx
- oraz
162. Kod z trescia oraz kod ukryty
- Dwa podejscia pisania stron ASP.NET
- Dwa pliki powiazane (.aspx i .aspx.cs- C)
Plik z trescia JedenPlik.aspx
Plik ukryty DrugiPlik.aspx.cs
172. Metody przekierowania
- Cztery glówne metody
- HyperLink wartosc wlasciwosci NavigateURL, (
bez ponowengo zapytania serwera) - Metoda Server.Transfer klasa HttpServerUtility,
przerywa przetwarzanie biezacej strony i
przetwarza nowa (brak w historii przegladarki
adres pozostaje stary) - Metoda Response.Redirect klasa HttpResponse (
bez ponownego zapytania serwera) - Mechanizm Cross-Page-Posting (PostBackURL) -
nowosc
182. Metody przekierowania
- Róznica pomiedzy Response.Redirect
- i
- Server.Transfer
194.Metody przesylania danych pomiedzy stronami
204.Metody przesylanie danych pomiedzy stronami
214.Metody przesylanie danych pomiedzy stronami
- Przyklad zapisu wartosci kontrolek za pomoca
stanu widoku - ViewState
224.Metody przesylania danych pomiedzy stronami
- Przyklad zapisu wartosci kontrolek za pomoca
stanu widoku - ViewState
W przypadku klas wlasnych, nalezy dodac
Serializable !!!
234.Metody przesylanie danych pomiedzy stronami cd.
- Przyklad przekazania zmiennych za pomoca metody
GET - QueryString
Page.aspx
Test.aspx
244.Metody przesylanie danych pomiedzy stronami
- Przyklad zapisu wartosci kontrolek za pomoca
ciasteczek (Cookies) - informacji jawne - - Konieczny using System.Net
Odczyt cookie
Tworzenie cookie
Usuwanie cookie
254.Metody przesylanie danych pomiedzy stronami
-SESJA
- Zamknieci sesji, przekroczenie limitu czasu
- Jezeli Cookie wylaczony, SessionID w URL
- Wywoluje zdarzenia sesji Session_Start i
Session_End, oblsuga zdarzen w global.asax - Sesja korzysta z 120 bit identyfikatora SessionID
- Konfiguracja stanu sesji nadzorowana dyrektywa
strony EnableSesionState true,false,readonly - Stan sesji w pamieci serwera jako czesc procesu
asp.net
264.Metody przesylanie danych pomiedzy stronami
-Sesja
- Trzy metody magazynowania stanu sesji
SessionID -w cookies -w URL Stan
sesji implementowany za pomoca wlasciwosci
Contents collection klasy HttpSessionState
274.Metody przesylanie danych pomiedzy stronami
-Sesja
- Trzy metody magazynowania stanu sesji
- Konfiguracja typu stanu sesji (mode) w
web.config - modeoff stan sesji wylaczony
- modeInProc w procesie na serwerze lokalnym
(default) - modeStateServer stan sesji na serwerze
zdalnym, konieczny wpis stateConnectionString - modeSqlServer, stan sesji na serwerze SQL,
konieczny wpis sqlConnectionString - modeCustom, pozwala na okreslenie wlasnego
dostawcy
284.Metody przesylanie danych pomiedzy stronami
Sesja
- Przyklad uzycia sesji w trybie InProc z
wymuszonym odrzuceniem plików cookies jako
magazynu SessionID
Klasa uzytkownia class1
Ustawieni trybu W web.config
Obsluga zapisu i odtworzenie Obiektu klasy
class1
294.Metody przesylanie danych pomiedzy stronami
stan sesji
Wynik kodu z poprzedniego slajdu Wymuszony brak
obslugi cookies
304. Metody przesylanie danych pomiedzy stronami
stan aplikacji
- Stan aplikacji istnieje do momentu restartu
serwera - Plik global.asax zawiera globalny kod calej
aplikacji i zawiera obsluge zdarzen
Application_Start, Application_End,
Application_Error - W stanie aplikacji wspóluzytkowane sa zmienne
globalne za pomoca slownika obiektów - Dzieki wlasciwosci Application klasy
HttpApplication
314. Metody przesylanie danych pomiedzy stronami
stan aplikacji
- Przyklad uzycia - licznik zadan
Niepoprawny kod
Poprawny kod
324. Nowosc w ASP.NET 2.0mechanizm
Cross-Page-Posting
- Otrzymywanie danych z poprzedniej strony
- Dla kontrolki (np. Button) ustawiamy PostBackUrl
lub przekierowanie z udzialem servera
Server.Transfer - Nie dziala z Response.Redirect bez udzialu
serwera. - Kontrolki z poprzedniej strony dostepne dzieki
wlasciwosci Page.PreviousPage
334. Nowosc w ASP.NET 2.0mechanizm
Cross-Page-Posting
Bez deklaracji dyrektywy Pózne wiazanie
Uzycie deklaracji dyrektywy
Uzycie Akcesora na stronie CrossPagePostinaspx.a
spx
345. AutoPostback
- Automatyczny postback mozliwy jest przez
ustawienie wlasciwosci kontrolki na Autopostback
na True - Gdy kontrolka zmieni stan (u klienta) wychwytuje
to zdarzenie onchange w javascript - generuje sie automatycznie funkcja function
__doPostBack(eventTarget, eventArgument) - Zapisane w postaci pól ukrytych przesylane sa
dane dotyczace kontrolki - ltinput type"hidden" name"__EVENTTARGET"
id"__EVENTTARGET" value"" /gt - ltinput type"hidden" name"__EVENTARGUMENT"
id"__EVENTARGUMENT" value"" /gt
356. Cykl zyciowy strony
36III Znajdowanie i usuwanie bledów
- 1. Sledzenie wykonywania programu
- 2. Debugowanie programu
- 3. Obsluga bledów
37III Znajdowanie i usuwanie bledów -Sledzenie
wykonywania programu
- Poprzednio (ASP 3.0) Response.Write()
- w ASP.NET 2.0 sledzenie na poziomie
- Request Details, Time of Request, Request Type,
Status Code, Trace Information, Control Tree - wlasne komentarze
- Trace.Write(Kategoria,Komunikat
ostrzezenia,wyjatek) - Trace.Warn. kolor czerwony
- Na poziomie strony (w dyrektywie Tracetrue)
- Na poziomie aplikacji (wpis w web.config)
- wywolujemy http//mojastrona/trace.axd
38III Znajdowanie i usuwanie bledów -Sledzenie
wykonywania programu na poziomie strony
39III Znajdowanie i usuwanie bledów -Sledzenie
wykonywania programu na poziomie aplikacji
40III Znajdowanie i usuwanie bledów debugowanie
aplikacji
41III Znajdowanie i usuwanie bledów debugowanie
aplikacji
- Wlasciwosci punktu kontrolnego (zatrzymuje
wykonanie programu w wyznaczonym wierszu) - Location ustawia punkt kontrolny w wyznaczonym
wierszu, - Condition ustawia warunek is true/has change
- Hit Counter zatrzymuje wykonywanie programu po
osiagnieciu danej liczby powtórzen kodu - Filter- punkt stopu dla okreslonych procesów,
watków, itp. - When Hit uruchomienie np. makr w momencie stopu
42III Znajdowanie i usuwanie bledów debugowanie
aplikacji obsluga bledów
- Cel przechwycenie bledu zanim aplikacja wysle
klientowi podstawowa strone bledu - Konfiguracja obslugi bledów- plik web.config dla
calej aplikacji - W przypadku przechwycenia bledu o danych kodzie
nastepuje przekierowanie - mode true, false, RemoteOnly
- Dla konkretnej strony ErrorPage
43IV Walidacja danych
- Do sprawdzanie poprawnosci danych wprowadzonych
przez uzytkownika - Nr karty kredytowej,
- Kodów pocztowych,
- Nr Pesel, NIP, ISBN
- Adres email,
- W ASP.NET wykorzystujemy kontrolki do sprawdzania
poprawnosci wejsciowych danych uzytkownika. - Przegladarki uplevel gtIE 4.0, .Net u klienta,
- Przegladarki downlevel ltIE 4.0,.Net na serwerze
- Wymuszenie walidacji po stronie serwera
44IV Walidacja danych
- kontrolki do sprawdzania poprawnosci wejsciowych
danych uzytkownika - RequiredFieldValidator wymagane dane
- RangeValidator wartosc w podanym zakresie
- CompareValidator porównanie z inna wartoscia
lub wartoscia kontrolki - RegularExpressionValidator walidacja za pomoca
wyrazen regularnych - CustomValidator wlasne metody do sprawdzania
poprawnosci danych wejsciowych (u klienta
javascript, na serwerze np.c) - ValidationSummary- podsumowuje bledy
45IV Walidacja danych - RequiredFieldValidator
- Gwarantuje wpisanie wartosci do kontrolki
nadzorowanej oraz moze wymagac zmiany domyslnej
wartosci przez uzytkownika - Wlasciwosc ControlToValidate wskazuje
kontrolke, w która bedzie nadzorowal, - Wlasciwosc InitialValue jezeli wartosc w
kontrolce nadzorowanejInitialValue -gtblad - SetFocusOnErrortrue - ustawia skupienie na
pierwsza kontrolke z bledem - Mozna skorzystac programowo z wlasciwosci
Page.IsValid - ErrorMessage - komunikat bledu
46IV Walidacja danych ValidationSummary
- Podsumowuje wszystkie bledy w jednej kontrolce i
wyswietla komunikaty o bledach - HeaderText- Naglówek w kontrolce podsumowujacej
- ShowSummarytrue, pokazuje informacje o bledach w
HTMLu - ShowMessageBoxtrue, pokazuje informacje o
bledach w oknie informacyjnym Javascript - DisplayMode0 BulletList
- DisplayMode1 List
- DisplayMode2 SingleParagraph
47IV Walidacja danych CompareValidator
- Porównuje wartosci w kontrolce nadzorowanej z
kryteriami narzuconymi - Stosowana np. do weryfikacji wpisania ponownie
hasla w formularzu rejestracyjnym - Type np. integer, string, data...
- Operator, GreaterThan, Equals, DataTypeCheck
sprawdza typ danych - ValueToCompare wartosc stala stosowana w
kryterium - ControlToCompare- zamiast ValueToCompare pobiera
wartosc do porównania z wybranej kontrolki
48IV Walidacja danych RangeValidator
- Kontroluje zakres danych wejsciowych liczb,
znaków lub dat - MinimumValue, MaxiumumValue
- Atrybut Type Integer ,String, Currency, Date,
Double - Wszystkie kontrolki stosowane do walidacji mozna
grupowac poprzez wlasciwosc ValidationGroup -
przycisk wysylajacy formularz musi miec ta sama
wartosc ValidationGroup
49IV Walidacja danych RegularExpressionValidator
- Kontrolka sprawdzajaca wprowadzone dane o
najwiekszych mozliwosciach- korzysta z wyrazen
regularnych - ValidationExpression wartosc wyrazenia
regularnego Np.\d2-\d3 02-567 kod
pocztowy - Udogodnienie w VS.NET Edytor Regular Expression
Editor
50IV Walidacja danych Custom Validator
- Tworzymy wlasna metode sprawdzania poprawnosci
która zwraca true lub false - Metoda powinna byc zarówno po stronie serwera
(downlevel) jak i po stronie klienta (uplevel) - ValidateEmptyText false- blad w przypadku braku
wartosc w kontrolce nadzorowanej- bardzo pomocne - ServerValidator metoda po stronie serwera
- ClientValidationFunction metoda po stronie
klienta
51IV Walidacja danych - przyklad
52V. Dane i dostep do danych
- Dostep do bazy bez uzywania ADO.NET
- Kontrolka SqlDataSource- mozna podpiac pod
kontrolke dostepu do bazy - LINQ to SQL- definiuje sie zapytanie uzywajac C
(lub kontrolka LinqDataSource) - Profile pozwalaja na zapis specyficznych bloków
danych powiazanych z uzytkownikiem bez pisania
kodu ADO.NET. Generacja tabel odbywa sie przez
aspnet_regsql A p
53V. Dane i dostep do danych
- .Net framework posiada 4 dostawców (providers)
- SQL Server provider (7.0 lub wyzsza)
- OLE DB provider- np. dostep do Excela
- Oracle provider- 8i lub wyzej
- ODBC provider
- Klasy pomocne
- Connection tworzy polaczenie
- Command do wykonywania komend SQL
- DataReader szybki sposób odczyt danych (read
only) - DataAdapter wypelnia DataSet, potem mozliwy
update
54V. Dane i dostep do danych
- Wiazanie danych (Data Binding) z kontrolka
- GridView1.DataSource ds i
- GridView1.DataMember "Employees"
- lub
- GridView1.DataSource ds.Tables"Employees"
-
- i ostatecznie
- GridView1.DataBind()
55VI. Kontrolki dostepu do danych(Rich Data
Controls)
- Przeglad i przyklady kontrolek wyswietlania
danych - GridView,
- DataList,
- Repeater,
- DetailsView,
- FormView
- Kontrolka zródel danych
- SqlDataSource rzadko sie stosuje, lepiej przez
ADO.NET - Przyklady realizowane beda na podstawie bazy
danych NorthWind w MSSQL 2005
56VI. Kontrolki dostepu do danych GridView
- GridView wywodzi sie z BaseDataBoundControl
podobnie jak AdRotator, DetailsView, FormView,
elementy klasy ListControl CheckBoxList,
RadioButtonList, - GridView posiada wiele wlasciwosci
- AllowPaging, AllowSorting, AutoGenerateColumns,
AutoGenerateDeleteButton, AutoGenerateEditButton,
AutoGenerateSelectButton, DataKeyNames,
Datasource, PageCount, PageSize, - Korzystamy albo z klikania w tag inteligentny
wizard, albo kodujemy w kodzie z trescia.
57VI. Kontrolki dostepu do danych
GridViewzarzadzanie tabela Customers
58VI. Kontrolki dostepu do danych
GridViewzarzadzanie tabela Customers
Odzwierciedlenie wizarda w kodzie z trescia
- Tag inteligentny Enable Paging, Enable Sorting,
Autoformat w pare minut gotowa strona z
stronicowaniem i sortowaniem
59VI. Dane i dostep do danych GridViewzarzadzanie
tabela Customers
Zarzadzanie widokiem albo z kodu z trescia, albo
inteligentny tag, najlepiej wylaczyc
AutoGenerateColumnsfalse, aby samemu zarzadzac
kolumnami z GridView
AutoGenerateColumnsfalse Reczne zarzadzanie
kolumnami
60VI. Dane i dostep do danych GridViewzarzadzanie
tabela Customers insert, update, delete
Ponowna konfiguracja SqlDataSource dla GridView i
wybranie zakladki advanced
Enabled select Enabled edit Enabled delete
61VI. Kontrolki dostepu do danych
GridViewzarzadzanie tabela Customers insert,
update, delete
Przyklad zarzadzania tabela Customers
62VI. Kontrolki dostepu do danych
GridViewprzekazanie parametrów do zapytania
select
- Cel Wyswietlic liste zamówien w kontrolce
GridView dla wybranego klienta w innej kontrolce
GridView
- Dodajemy nowa kontrolke GridView i podlaczamy
nowa kontrolke SqlDataSource z dostepem do
tabelki Orders. - Wybieramy przycisk where w oknie dialogowym i
dostosowujemy zapytanie do wyswietlania
wszystkich zamówien tylko do wybranego klienta z
pierwszej kontrolki Gridview
63VI. Kontrolki dostepu do danych GridView
64VI. Kontrolki dostepu do danych DataList
- Sluzy do tworzenia list danych na podstawie 7
szablonów - Szablony sluza do okreslania zawartosci i wygladu
- EditItemTemplate dotyczy wygladu edycji
- ItemTemplate domyslny wyglad dla zawartosci
- SelectedItemTemplate- wyglad zaznaczonego
elementu - FooterTemplate dotyczy wygladu stopki
- HeaderTemplate dotyczy wygladu naglówka
- AlternatingItemTemplate dotyczy itemTemplate
- SeparatorTemplate wyglad separatorów
65VI. Kontrolki dostepu do danych DataList
- Zasada podpinania zródla danych identyczna jak
poprzednio - RepeatDirection Horizontal, Vertical
- RepeatColumns maksymalna liczba kolumn
66VI. Kontrolki dostepu do danych DataList Edycja
danych przycisk Edit
- Nalezy skopiowac sekcje ItemTemplate do
EditItemTemplate - Zmienic kontrolke Label na TextBox (find and
replace) - Dodac przycisk Edit oraz CommandNameedit
- Dodac przycisk Cancel oraz CommandNamecancel
- Dodac przycisk Update oraz CommandNameupdate
- Dodac obsluge zdarzen do kontrolki DataList
UpdateCommand, CancelCommand, EditCommand - Dodac procedure modyfikacji danych wraz z
parametrami - UpdatedQuery
67VI. Kontrolki dostepu do danychRepeater
- Kontrolka Repeater jest kontenerem, sluzacym do
przetwarzania kolejnych pozycji listy danych - Nie posiada zadnych styli, cale formatowanie
spoczywa na programiscie (kod z trescia)
68VI. Kontrolki dostepu do danychRepeater
- ItemTemplate Szablon ten jest konieczny dla
kontrolki Repeater. W wyniku dzialania tego
szablonu kazdy wiersz danych wyswietlany jest
oddzielnie. - AlternatingItemTemplate szablon taki sam jak
ItemTemplate, ale przetwarzany jest oddzielie dla
kazdego wiersza danych. Umozliwia to okreslanie
ustawien stylu dla poszczególnych wierszy. - HeaderTemplate oraz FooterTemplate szablony te
przetwarzaja kod HTML bezposrednio przed i po
wyswietleniu wszystkich wierszy danych. - SeparatorTemplate szablony te przedstawiaja
elementy znajdujace sie pomiedzy poszczególnymi
wierszami danych - Szablon AlternatingItemTemplate umieszczony po
ItemTemplate umozliwia formatowanie wierszy dla
co drugiego wiersza.
69VI. Kontrolki dostepu do danychFormView
- Kontrolka alternatywna wobec DetailsView
- Calkowicie zbudowana z szablonów
- Wieksze mozliwosci sterowania jej wygladem i
dzialaniem - Musi dostawac z zewnatrz informacje o id rekordu,
który ma wyswietlic - Nie ma sortowania i stronicowania, poniewaz
wyswietla tylko jeden rekord, bez przelaczania na
inny tylko programowo.
70VI. Kontrolki dostepu do danychDetailsView
- Wyswietla tylko jeden rekord w danym momencie
- Pozwala na automatyczne utworzenie przycisków do
usuwania, modyfikacji oraz dodawania rekordów - Zasada tworzenia podobna jak w pozostalych
przykladach
71Cwiczenie na zaliczenie
- Przeksztalcic formularz podany na zaliczenie
czesci I do postaci zarzadzalnej na podstawie
bazy danych z walidacja danych - Walidacja danych
- Wymienione w formularzu dane wrzucamy do bazy
- Dane edytujemy,
- Dane usuwamy.
- Przyklady przesylania danych pomiedzy stronami
- - cookies,
- - stan widoku,
- - stan sesji
- - stan aplikacji
- -querystring
- Przyklady uzycia kontrolek dostepu do danych
- GridView,
- DataList,
- Repeater,
- DetailsView,
- FormView