Post on 03-Jan-2016
description
1
.NET web szolgáltatások
ASP.NET első rész
Bilicki Vilmosbilickiv@inf.u-szeged.huwww.inf.u-szeged.hu/~bilickiv
2
A mai előadás tartalma: ASP.NET
Web űrlapokVezérlés, megjelenítés elkülönítéseKövetés, hibakeresésFelhasználói bevitel ellenőrzése
3
Források Microsoft 2310B official curriculum http://www.gotdotnet.com/
4
Web űrlapok Web űrlapő létrehozása Szerver vezérlők használata
5
ASP.NET A megszokott grafikus eszköztárat
használhatjukEseménykezelésKomplex objektumok (fa nézet, …)Bevitel ellenőrzés
Hasonló megoldás:Java Server Faces JSF
http://java.sun.com/j2ee/javaserverfaces/index.jsp
6
ASP.NET működése
7
Web űrlap (Web form)
<%@ Page Language=„cs" Codebehind="WebForm1.aspx.cs" SmartNavigation="true"%>
<html><body ms_positioning="GridLayout"> <form id="Form1" method="post" runat="server"> </form></body>
</html>
<%@ Page Language=„cs" Codebehind="WebForm1.aspx.cs" SmartNavigation="true"%>
<html><body ms_positioning="GridLayout"> <form id="Form1" method="post" runat="server"> </form></body>
</html>
.aspx kiterjesztés Lap attribútumok
@ Page firektíva Body tulajdonságok Form tulajdonságok
8
Szerver vezérlő
Runat="server"Az események a szerveren történnekLáthatjuk az elmentett állapotot
Beépített tulajdonságokkal rendelkezik Általánons objektum modell
Mindengyik rendelkezik Id és Text tulajdonságokkal
Böngésző függő HTML-t gyárt
<asp:Button id="Button1" runat="server" Text="Submit"/><asp:Button id="Button1" runat="server" Text="Submit"/>
9
Szever vezérlő típusai HTML szerver vezérlők Web szerver vezérlők
Belső vezérlőkÉrvényesítő vezérlőkSokoldalú vezérlők (rich)Listához kötött vezérlőkInternet Explorer Web vezérlők
10
Állapot mentés Rejtett állapot vezérlő, név-érték párokat
tárol
Be van kapcsoklva, de beállítható
Web szerver farm
<%@ Page EnableViewState="False" %>
<asp:ListBox id="ListName" EnableViewState="true" runat="server">
</asp:ListBox>
<%@ Page EnableViewState="False" %>
<asp:ListBox id="ListName" EnableViewState="true" runat="server">
</asp:ListBox>
<input type="hidden" name="__VIEWSTATE" value="dDwtMTA4MzE0MjEwNTs7Pg==" />
<input type="hidden" name="__VIEWSTATE" value="dDwtMTA4MzE0MjEwNTs7Pg==" />
11
HTML szerver vezérlők
HTML elemeken alapulnak A System.Web.UI.HtmlControls
névtérben vannak
<input type="text" id="txtName" runat="server" />
<input type="text" id="txtName" runat="server" />
12
Web Szerver vezérlők
A System.Web.UI.WebControls névtrében vannak
Szintaxisuk:
A generált HTML:
<asp:TextBox id="TextBox1"runat="server">Text_to_Display</asp:TextBox>
<asp:TextBox id="TextBox1"runat="server">Text_to_Display</asp:TextBox>
<input name="TextBox1" type="text" value="Text_to_Display"Id="TextBox1"/>
<input name="TextBox1" type="text" value="Text_to_Display"Id="TextBox1"/>
13
Specifikus funkció (naptár)Kliensen szertnénk a vezérlés elvégezni
Több böngészőt is támogatMeglévő HTML oldalak
C# programn modellHTML-szerű objektum modell
Web SzerverWeb Szerver::HTMLHTML::
Nincs sávszélesség korlátA sávszélesség korlátozott
Mikor melyiket válasszuk?
14
Web form létrehozása Nyomógomb Beviteli mező
1. Demó
15
Vezérlés, megjelenítés elkülönítés
Kód oldalak a web oldalak mögött Esemény kezelés Oldal események
16
Programkód helye Három hely:
A HTML tartalommal keverve (vegyes)A HTML oldalban egy kijelölt helyen
(beágyazott kód)Külön fájlban (VS alapértelmezett)
17
Beágyazott kód Tartalom, kód egy fájlban Más-más szekciókat használhatunk
<HTML><asp:Button id="btn" runat="server"/></HTML><SCRIPT Language="vb" runat="server"> Sub btn_Click(s As Object, e As EventArgs) Handles btn.Click ... End Sub</SCRIPT>
<HTML><asp:Button id="btn" runat="server"/></HTML><SCRIPT Language="vb" runat="server"> Sub btn_Click(s As Object, e As EventArgs) Handles btn.Click ... End Sub</SCRIPT>
<HTML><asp:Button id="btn" runat="server"/></HTML><SCRIPT Language="c#" runat="server"> private void btn_Click(object sender, System.EventArgs e) { . . . }</SCRIPT>
<HTML><asp:Button id="btn" runat="server"/></HTML><SCRIPT Language="c#" runat="server"> private void btn_Click(object sender, System.EventArgs e) { . . . }</SCRIPT>
18
Külön kód oldalak Tartalom, kód elkülönítés
A UI fejlesztők és a logika fejlesztők külön dolgozhatnak
Form1.aspxForm1.aspx Form1.aspxForm1.aspx Form1.aspx.vbForm1.aspx.vbor Form1.aspx.csor Form1.aspx.cs
<tags><tags> KódKód
KódKód
Külön fájlokEgy fájl
19
Hogyan működik Külön fájlok a UI-nek és a logikának A @ Page elemben lehet jelezni Előre fordított vagy JIT-telt
Page1.aspx
<% @ Page Language="c#"Inherits="Project.WebForm1" Codebehind="Page1.aspx.cs" Src = "Page1.aspx.cs" %>
Page1.aspx.cs public class WebForm1 { private void cmd1_Click() { … } }
20
Esemény kezelés Reakciók a felhasználói műveletekre
21
Kliens oldali eseménykezelés
Internet .HTM Pages
Tipikusan HTML vezérlőkkel használt A böngésző futtatja Nincs hozzáférése a szerver
erőforrásaihoz <SCRIPT language="language">
22
Szerver oldali eseménykezelés Web és HTML vezérlőkkel egyaránt
használatos A kód a szerveren fut Hozzáfér a szerver erőforrásaihoz <SCRIPT language="vb" runat="server"> vagy
<SCRIPT language=“cs" runat="server">
Internet.ASPX Pages
23
Eseménykezelők használata Visual Studio .NET deklarálja a
változókat és létrehozza az eseménykezelőt
protected System.Web.UI.WebControls.Button cmd1;private void InitializeComponent(){ this.cmd1.Click += new System.EventHandler(this.cmd1_Click); this.Load += new System.EventHandler(this.Page_Load);} private void cmd1_Click(object s, System.EventArgs e)
protected System.Web.UI.WebControls.Button cmd1;private void InitializeComponent(){ this.cmd1.Click += new System.EventHandler(this.cmd1_Click); this.Load += new System.EventHandler(this.Page_Load);} private void cmd1_Click(object s, System.EventArgs e)
24
2. Demó Támogatás a Visual Studio-ban
Esemény kezelők létrehozása Generált kód
25
Vezérlők használaat Tulajdonság olvasás
Tulajdonság írás
lblGreeting.Text = "new text"lblGreeting.Text = "new text"
strGreeting = "Hello " & txtName.TextstrGreeting = "Hello " & txtName.Text
strGreeting = "Hello " + txtName.Text;strGreeting = "Hello " + txtName.Text;
lblGreeting.Text = "new text";lblGreeting.Text = "new text";
26
Egy oldal életciklusa
Page_LoadPage_Load
Page_UnloadPage_Unload
Textbox1_ChangedTextbox1_Changed
Button1_ClickButton1_Click
Az oldal megszűnik
Page_InitPage_Init
Vezérlő eseményekVezérlő események
Change EventsChange Events
Action EventsAction Events
27
A Page.IsPostback események Page_Load minden kérésre meghívódik
A Page.IsPostBack tulajdonságot lehet figyelni
private void Page_Load(object sender, System.EventArgs e){ if (!Page.IsPostBack)
{ // executes only on initial page load}
//this code executes on every request}
private void Page_Load(object sender, System.EventArgs e){ if (!Page.IsPostBack)
{ // executes only on initial page load}
//this code executes on every request}
28
Vezérlők összekapcsolása A vezérlők egymás értékeit használhatják
Data binding
<asp:DropDownList id="lstOccupation" autoPostBack="True" runat="server" >You selected: <asp:Label id="lblSelectedValue" Text="<%# lstOccupation.SelectedItem.Text %>" runat="server" />
<asp:DropDownList id="lstOccupation" autoPostBack="True" runat="server" >You selected: <asp:Label id="lblSelectedValue" Text="<%# lstOccupation.SelectedItem.Text %>" runat="server" />
private void Page_Load(object sender, System.EventArgs e){ lblSelectedValue.DataBind();}
private void Page_Load(object sender, System.EventArgs e){ lblSelectedValue.DataBind();}
29
3. Demó Felirat csatolás lista vezérlőhöz
30
Követés (Tracing) Futásidejű információ A követés engedélyezée A Trace objektum Az eredmények vizsgálata Alkalmazás szintű követés
31
Futásidejű információ Futás idő alatt:
A változók értékeit kiírathatjukFigyelhetjük adott feltételek teljesülésétKövethetjük az alkalmazás végrehajtási
útvonalát Ezeket az információkat:
a Trace objektumés a Debug objektum
biztosítja
32
Követés engedélyezése Oldal szintű követés csak az oldalon definiált
követéssel foglalkozik Oldalszintű követés engedélyezése
Alkalmazás szintű minden oldalra vonatkozik Engedélyezése a Web.config fájlban
lehetséges
<trace enabled="true" pageOutput="true"localOnly="true"/><trace enabled="true" pageOutput="true"localOnly="true"/>
<%@ Page Language="c#" Trace="true" %> <%@ Page Language="c#" Trace="true" %>
33
Üzenetek beszúrása
Feltételes végrehajtás Trace.IsEnabled
Dinamikus állapotváltás
A Trace objektum használata
Trace.Write ("category", "message")Trace.Warn ("category", "message")Trace.Write ("category", "message")Trace.Warn ("category", "message")
Trace.IsEnabled = FalseTrace.IsEnabled = False
if (Trace.IsEnabled){ strMsg = "Tracing is enabled!"; Trace.Write("myTrace", strMsg);}
if (Trace.IsEnabled){ strMsg = "Tracing is enabled!"; Trace.Write("myTrace", strMsg);}
34
Eredmények megtekintése
35
Alkalmazás szintű követés
Alap értelmezésben az eredmények minden egyes oldalon láthatóak
A pageOutput=false beállításával Web.config az eredmények itt láthatóakhttp://server/project/trace.axdhttp://server/project/trace.axd
OldalOldalOldalOldal
Trace=TrueTrace=True
Trace=FalseTrace=False
Trace not setTrace not set
AlkalmazásAlkalmazásAlkalmazásAlkalmazás
Trace=True or Trace=FalseTrace=True or Trace=False
Trace=True or Trace=FalseTrace=True or Trace=False
Trace=TrueTrace=True
EredményEredményEredményEredmény
Az oldalon látható Az oldalon látható
Az eredmény nem látható Az eredmény nem látható
Az oldalon látható Az oldalon látható
36
4. Demó
Oldalszintű Alkalmazás szintű
37
Követés a komponensen belül A System.Web könyvtár importálása
Engedélyezés
Trace metódus meghívása
HttpContext.Current.Trace.IsEnabled = TrueHttpContext.Current.Trace.IsEnabled = True
using System.Web;using System.Web;
HttpContext.Current.Trace.Write("component","this is my trace statement");
HttpContext.Current.Trace.Write("component","this is my trace statement");
38
Felhasználói bevitel ellenőrzése Áttekintés Ellenőrző vezérlők Oldal ellenőrzés
39
Bevitel ellenőrzés Ellenőrzi a vezérlő értékét Az oldal feldolgozását letiltja amíg nincs
minden rendben Megelőzi
kártékony kódok bevitelét
40
Kliens és szerver oldali ellenőrzés ASP.NET mindkét
oldalt legenerálja Kliens oldali
Böngésző függő Azonnali válasz Csökkenti a
webszerver terhelését
Szerver oldali ellenőrzés Megismétli a klines
oldali ellenőrzést Tárolt adatokat is
használhatunk
Érv.?
Érv.?
Felh. bevitel
Nem
Nem
Igen
Igen
Hiba üzenet
Kliens
Szerver
Feldolgozás
41
ASP.NET ellenőrző vezérlőkASP.NET az alábbi funkciókat támogatja: Érték összehasonlítás Saját minta alapján összehasonlítás Tartomány ellenőrzés Reguláris kifejezés Felhasználói bevitel megkövetelése Az adott oldal ellenőrzéseinek összegzése
42
Ellenőrző vezérlők hozzáadása
1. Vezérlő hozzáadása
2. A beviteli vezérlő kiválasztása
3. Az érvényesítési tulajdonságok beállítása
<asp:Type_of_Validator id="Validator_id"runat="server"ControlToValidate="txtName"ErrorMessage="Message_for_error_summary"Display="static|dynamic|none"Text="Text_to_display_by_input_control">
</asp:Type_of_Validator>
<asp:Type_of_Validator id="Validator_id"runat="server"ControlToValidate="txtName"ErrorMessage="Message_for_error_summary"Display="static|dynamic|none"Text="Text_to_display_by_input_control">
</asp:Type_of_Validator>
<asp:TextBox id="txtName" runat="server" /><asp:TextBox id="txtName" runat="server" />
1111
2222
3333
43
Ellenőrző vezérlők kombinálása Több ellenőrző is tartozhat egy beviteli vezérlőhöz Csak a RequiredFieldValidator ellenőrzi az üres
vezérlőket
44
Bevitel ellenőrző vezérlők
RequiredFieldValidatorInitialValue
CompareValidatorValueToCompare vagy
ControlToCompareTypeOperator
RangeValidatorMinimumValueMaximumValueType
45
Reguláris kifejezések Used when input must conform to a
pre-defined pattern Visual Studio .NET includes patterns
for:Telephone numbersPostal codesE-mail addresses
<asp:RegularExpressionValidator …ControlToValidate="US_PhoneNumber"…ValidationExpression="((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4} "…>*</asp:RegularExpressionValidator >
<asp:RegularExpressionValidator …ControlToValidate="US_PhoneNumber"…ValidationExpression="((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4} "…>*</asp:RegularExpressionValidator >
46
5. Demó Ellenőrző vezérlők használata RequiredFieldValidator RangeValidator RegularExpressionValidator
47
CustomValidator vezérlő Kliens, szerver vagy mindkét oldalon
használhatóClientValidationFunctionOnServerValidate
Érvényesít: FormulaAdatCOM objektumWeb Szolgáltatás
segítségével
48
Oldal ellenőrzés
A Page.IsValid tulajdonság ValidationSummary vezérlő
49
A Page.IsValid tulajdonság
Minden vezérlőt lekérdez
private void cmdSubmit_Click(object s, System.EventArgs e)
{ if (Page.IsValid){ Message.Text = "Page is Valid!";
// Perform database updates or other logic here}
}
private void cmdSubmit_Click(object s, System.EventArgs e)
{ if (Page.IsValid){ Message.Text = "Page is Valid!";
// Perform database updates or other logic here}
}
50
A ValidationSummary vezérlő Összegyűjti az összes hibamezőt az oldalon Üzenetek megjelenítésére is alkalmas A Text="*" mintát használjuk a hiba
megjelölésére
<asp:ValidationSummary id="valSummary"runat="server"HeaderText="These errors were found:"ShowSummary="True" DisplayMode="List"/>
<asp:ValidationSummary id="valSummary"runat="server"HeaderText="These errors were found:"ShowSummary="True" DisplayMode="List"/>
51
Áttekintés: ASP.NET
Web űrlapokVezérlés, megjelenítés elkülönítéseKövetés, hibakeresésFelhasználói bevitel ellenőrzése
52
A következő előadás tartalma ASP.NET második rész
ÁllapotkövetésSaját komponensek fejlesztéseBiztonságOptimalizálásASP.NET 2.0