1.NET web szolgáltatások ASP.NET első rész Bilicki Vilmos
2 A mai előadás tartalma: ASP.NET Web űrlapok Vezérlés, megjelenítés elkülönítése Követés, hibakeresés Felhasználói bevitel ellenőrzése
3 Források Microsoft 2310B official curriculum
4 Web űrlapok Web űrlapő létrehozása Szerver vezérlők használata
5 ASP.NET A megszokott grafikus eszköztárat használhatjuk Eseménykezelés Komplex objektumok (fa nézet, …) Bevitel ellenőrzés Hasonló megoldás: Java Server Faces JSF sp sp
6 ASP.NET működése
7 Web űrlap (Web form).aspx kiterjesztés Lap Page firektíva Body tulajdonságok Form tulajdonságok
8 Szerver vezérlő Runat="server" Az események a szerveren történnek Lá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ők Sokoldalú vezérlők (rich) Listához kötött vezérlők Internet 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
11 HTML szerver vezérlők HTML elemeken alapulnak A System.Web.UI.HtmlControls névtérben vannak
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 id="TextBox1" runat="server">Text_to_Display <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 modell HTML-szerű objektum modell Web Szerver: HTML: Nincs sávszélesség korlát A 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 Sub btn_Click(s As Object, e As EventArgs) Handles btn.Click... End Sub Sub btn_Click(s As Object, e As EventArgs) Handles btn.Click... End Sub private void btn_Click(object sender, System.EventArgs e) {... } private void btn_Click(object sender, System.EventArgs e) {... }
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.aspx.vb Form1.aspx.vb or Form1.aspx.cs Kód Kó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 Page elemben lehet jelezni Előre fordított vagy JIT-telt Page1.aspx 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
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 vagy 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" strGreeting = "Hello " & txtName.Text strGreeting = "Hello " + txtName.Text; lblGreeting.Text = "new text";
26 Egy oldal életciklusa Page_Load Page_Unload Textbox1_Changed Button1_Click Az oldal megszűnik Page_Init Vezérlő események Change Events Action 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=" " runat="server" /> <asp:DropDownList id="lstOccupation" autoPostBack="True" runat="server" > You selected: <asp:Label id="lblSelectedValue" 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írathatjuk Figyelhetjük adott feltételek teljesülését Kö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"/>
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 = 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óak OldalOldal Trace=True Trace=False Trace not set AlkalmazásAlkalmazás Trace=True or Trace=False Trace=True EredményEredmény Az oldalon látható Az eredmény nem 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 = True 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.? Felh. bevitel Nem Igen Hiba üzenet Kliens Szerver Feldolgozás
41 ASP.NET ellenőrző vezérlők ASP.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 id="Validator_id" runat="server" ControlToValidate="txtName" ErrorMessage="Message_for_error_summary" Display="static|dynamic|none" Text="Text_to_display_by_input_control">
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 RequiredFieldValidator InitialValue CompareValidator ValueToCompare vagy ControlToCompare Type Operator RangeValidator MinimumValue MaximumValue Type
45 Reguláris kifejezések Used when input must conform to a pre-defined pattern Visual Studio.NET includes patterns for: Telephone numbers Postal codes addresses <asp:RegularExpressionValidator … ControlToValidate="US_PhoneNumber"… ValidationExpression=" ((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4} " …>* <asp:RegularExpressionValidator … ControlToValidate="US_PhoneNumber"… ValidationExpression=" ((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4} " …>*
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ó ClientValidationFunction OnServerValidate Érvényesít: Formula Adat COM objektum Web 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 űrlapok Vezérlés, megjelenítés elkülönítése Követés, hibakeresés Felhasználói bevitel ellenőrzése
52 A következő előadás tartalma ASP.NET második rész Állapotkövetés Saját komponensek fejlesztése Biztonság Optimalizálás ASP.NET 2.0