520 likes | 592 Views
.NET web szolgáltatások. ASP .NET első rész Bilicki Vilmos bilickiv@inf.u-szeged.hu 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.
E N D
.NET web szolgáltatások ASP.NET első rész Bilicki Vilmos bilickiv@inf.u-szeged.hu 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 • Microsoft 2310B official curriculum • http://www.gotdotnet.com/
Web űrlapok • Web űrlapő létrehozása • Szerver vezérlők használata
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 http://java.sun.com/j2ee/javaserverfaces/index.jsp
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> • .aspx kiterjesztés • Lap attribútumok • @ Pagefirektíva • Body tulajdonságok • Form tulajdonságok
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 rendelkezikIdésTexttulajdonságokkal • Böngésző függő HTML-t gyárt <asp:Button id="Button1" runat="server" Text="Submit"/>
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
Állapot mentés <%@ Page EnableViewState="False" %> <asp:ListBox id="ListName" EnableViewState="true" runat="server"> </asp:ListBox> • Rejtett állapot vezérlő, név-érték párokat tárol • Be van kapcsoklva, de beállítható • Web szerver farm <input type="hidden" name="__VIEWSTATE" value="dDwtMTA4MzE0MjEwNTs7Pg==" />
HTML szerver vezérlők • HTML elemeken alapulnak • A System.Web.UI.HtmlControls névtérben vannak <input type="text" id="txtName"runat="server" />
Web Szerver vezérlők • ASystem.Web.UI.WebControls névtrében vannak Szintaxisuk: A generált HTML: <asp:TextBox id="TextBox1" runat="server">Text_to_Display </asp:TextBox> <input name="TextBox1" type="text" value="Text_to_Display" Id="TextBox1"/>
Mikor melyiket válasszuk? HTML: Web Szerver: HTML-szerű objektum modell C# programn modell Meglévő HTML oldalak Több böngészőt is támogat Kliensen szertnénk a vezérlés elvégezni Specifikus funkció (naptár) A sávszélesség korlátozott Nincs sávszélesség korlát
1. Demó • Web form létrehozása • Nyomógomb • Beviteli mező
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
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)
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="c#" runat="server"> private void btn_Click(object sender, System.EventArgs e) { . . . } </SCRIPT>
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 Egy fájl Külön fájlok Kód <tags> Kód <tags> Form1.aspx.vb or Form1.aspx.cs Form1.aspx Form1.aspx
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.cs public class WebForm1 { private void cmd1_Click() { … } } Page1.aspx <% @ Page Language="c#"Inherits="Project.WebForm1" Codebehind="Page1.aspx.cs" Src = "Page1.aspx.cs" %>
Esemény kezelés • Reakciók a felhasználói műveletekre
Kliens oldali eseménykezelés • 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"> .HTM Pages Internet
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"> .ASPX Pages Internet
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)
2. Demó • Támogatás a Visual Studio-ban • Esemény kezelők létrehozása • Generált kód
Vezérlők használaat • Tulajdonság olvasás • Tulajdonság írás strGreeting = "Hello " & txtName.Text strGreeting = "Hello " + txtName.Text; lblGreeting.Text = "new text" lblGreeting.Text = "new text";
Egy oldal életciklusa Az oldal megszűnik Page_Init Page_Load Vezérlő események Textbox1_Changed Change Events Button1_Click Action Events Page_Unload
A Page.IsPostback események • Page_Load minden kérésre meghívódik • APage.IsPostBacktulajdonsá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 }
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" /> private void Page_Load(object sender, System.EventArgs e) { lblSelectedValue.DataBind(); }
3. Demó • Felirat csatolás lista vezérlőhöz
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
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: • aTraceobjektum • és aDebugobjektumbiztosítja
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 <%@ Page Language="c#" Trace="true" %> <trace enabled="true" pageOutput="true" localOnly="true"/>
A Trace objektum használata • Üzenetek beszúrása • Feltételes végrehajtás Trace.IsEnabled • Dinamikus állapotváltás Trace.Write ("category", "message") Trace.Warn ("category", "message") if (Trace.IsEnabled) { strMsg = "Tracing is enabled!"; Trace.Write("myTrace", strMsg); } Trace.IsEnabled = False
Oldal Alkalmazás Eredmény Trace=True Trace=True or Trace=False • Az oldalon látható Trace=False Trace=True or Trace=False • Az eredmény nem látható Trace not set Trace=True • Az oldalon látható 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 http://server/project/trace.axd
4. Demó • Oldalszintű • Alkalmazás szintű
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 using System.Web; HttpContext.Current.Trace.IsEnabled = True HttpContext.Current.Trace.Write ("component","this is my tracestatement");
Felhasználói bevitel ellenőrzése • Áttekintés • Ellenőrző vezérlők • Oldal ellenőrzés
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
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 Felh. bevitel Hiba üzenet Érv.? Nem Kliens Igen Szerver Érv.? Nem Igen Feldolgozás
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
Ellenőrző vezérlők hozzáadása • Vezérlő hozzáadása • A beviteli vezérlő kiválasztása • Az érvényesítési tulajdonságok beállítása 1 2 3 <asp:TextBox id="txtName" runat="server" /> <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>
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
Bevitel ellenőrző vezérlők • RequiredFieldValidator • InitialValue • CompareValidator • ValueToComparevagyControlToCompare • Type • Operator • RangeValidator • MinimumValue • MaximumValue • Type
Reguláris kifejezések • Used when input must conform to a pre-defined pattern • Visual Studio .NET includes patterns for: • Telephone numbers • Postal codes • E-mail addresses <asp:RegularExpressionValidator … ControlToValidate="US_PhoneNumber"…ValidationExpression="((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4} " …>*</asp:RegularExpressionValidator >
5. Demó • Ellenőrző vezérlők használata • RequiredFieldValidator • RangeValidator • RegularExpressionValidator
CustomValidator vezérlő • Kliens, szerver vagy mindkét oldalon használható • ClientValidationFunction • OnServerValidate • Érvényesít: • Formula • Adat • COM objektum • Web Szolgáltatássegítségével
Oldal ellenőrzés • A Page.IsValid tulajdonság • ValidationSummary vezérlő
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 } }
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"/>