52
1 .NET web szolgáltatások ASP.NET első rész Bilicki Vilmos [email protected] www.inf.u-szeged.hu/~bilickiv

NET web szolgáltatások

Embed Size (px)

DESCRIPTION

.NET web szolgáltatások. ASP .NET első rész Bilicki Vilmos [email protected] www.inf.u-szeged.hu/~bilickiv. 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. Források. - PowerPoint PPT Presentation

Citation preview

Page 1: NET web szolgáltatások

1

.NET web szolgáltatások

ASP.NET első rész

Bilicki [email protected]/~bilickiv

Page 2: NET web szolgáltatások

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

Page 3: NET web szolgáltatások

3

Források Microsoft 2310B official curriculum http://www.gotdotnet.com/

Page 4: NET web szolgáltatások

4

Web űrlapok Web űrlapő létrehozása Szerver vezérlők használata

Page 5: NET web szolgáltatások

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

Page 6: NET web szolgáltatások

6

ASP.NET működése

Page 7: NET web szolgáltatások

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

Page 8: NET web szolgáltatások

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"/>

Page 9: NET web szolgáltatások

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

Page 10: NET web szolgáltatások

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==" />

Page 11: NET web szolgáltatások

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" />

Page 12: NET web szolgáltatások

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"/>

Page 13: NET web szolgáltatások

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?

Page 14: NET web szolgáltatások

14

Web form létrehozása Nyomógomb Beviteli mező

1. Demó

Page 15: NET web szolgáltatások

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

Page 16: NET web szolgáltatások

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)

Page 17: NET web szolgáltatások

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>

Page 18: NET web szolgáltatások

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

Page 19: NET web szolgáltatások

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() { … } }

Page 20: NET web szolgáltatások

20

Esemény kezelés Reakciók a felhasználói műveletekre

Page 21: NET web szolgáltatások

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">

Page 22: NET web szolgáltatások

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

Page 23: NET web szolgáltatások

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)

Page 24: NET web szolgáltatások

24

2. Demó Támogatás a Visual Studio-ban

Esemény kezelők létrehozása Generált kód

Page 25: NET web szolgáltatások

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";

Page 26: NET web szolgáltatások

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

Page 27: NET web szolgáltatások

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}

Page 28: NET web szolgáltatások

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();}

Page 29: NET web szolgáltatások

29

3. Demó Felirat csatolás lista vezérlőhöz

Page 30: NET web szolgáltatások

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

Page 31: NET web szolgáltatások

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

Page 32: NET web szolgáltatások

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" %>

Page 33: NET web szolgáltatások

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);}

Page 34: NET web szolgáltatások

34

Eredmények megtekintése

Page 35: NET web szolgáltatások

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ó

Page 36: NET web szolgáltatások

36

4. Demó

Oldalszintű Alkalmazás szintű

Page 37: NET web szolgáltatások

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");

Page 38: NET web szolgáltatások

38

Felhasználói bevitel ellenőrzése Áttekintés Ellenőrző vezérlők Oldal ellenőrzés

Page 39: NET web szolgáltatások

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

Page 40: NET web szolgáltatások

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

Page 41: NET web szolgáltatások

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

Page 42: NET web szolgáltatások

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

Page 43: NET web szolgáltatások

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

Page 44: NET web szolgáltatások

44

Bevitel ellenőrző vezérlők

RequiredFieldValidatorInitialValue

CompareValidatorValueToCompare vagy

ControlToCompareTypeOperator

RangeValidatorMinimumValueMaximumValueType

Page 45: NET web szolgáltatások

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 >

Page 46: NET web szolgáltatások

46

5. Demó Ellenőrző vezérlők használata RequiredFieldValidator RangeValidator RegularExpressionValidator

Page 47: NET web szolgáltatások

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

Page 48: NET web szolgáltatások

48

Oldal ellenőrzés

A Page.IsValid tulajdonság ValidationSummary vezérlő

Page 49: NET web szolgáltatások

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}

}

Page 50: NET web szolgáltatások

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"/>

Page 51: NET web szolgáltatások

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

Page 52: NET web szolgáltatások

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