1 / 50

Szerver oldali vezérlők + oldal használata

Szerver oldali vezérlők + oldal használata. ASP.NET 4.0 KrZ. Oldal ( Page ) elem. public class Page : TemplateControl , IHttpHandler { ... }. Header infok ( HtmlHead ). nincs head rész a kódban de nyilván generál a html kódba eseménykezelőkben a header . Title Description

tariq
Télécharger la présentation

Szerver oldali vezérlők + oldal használata

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Szerver oldali vezérlők + oldal használata ASP.NET 4.0 KrZ

  2. Oldal (Page) elem public class Page : TemplateControl, IHttpHandler { ... }

  3. Headerinfok (HtmlHead) • nincs head rész a kódban • de nyilván generál a html kódba • eseménykezelőkben a header. • Title • Description • Keywords • Metainformációkat is lehet HtmlMetametaTag = new HtmlMeta(); metaTag.Name = "robots"; metaTag.Content = "noindex"; Page.Header.Controls.Add(metaTag);

  4. Vezérlők dinamikus létrehozása protected void Page_Load(object sender, System.EventArgs e) { Button newButton = new Button(); newButton.Text= "* Dynamic Button *"; newButton.ID = "newButton"; Panel1.Controls.Add(newButton); }

  5. Vezérlők dinamikus törlése Button foundButton = (Button)Page.FindControl("newButton"); if (foundButton != null) { foundButton.Parent.Controls.Remove(foundButton); }

  6. Oldal (Page) osztályhasznos tulajdonságok • Session • Application • Cache • Request • Response • Server • User (System.Security.Principal.IPrincipal) • Trace • Profile

  7. Session (System.Web.SessionState.HttpSessionState) • név – érték párban tárolódik (dictionary-style)

  8. Application(System.Web.HttpApplicationState) • név – érték párban tárolódik (dictionary-style) • A webalkalmazásra nézve globális

  9. Cache(System.Web.Caching.Cache) • globális adat, ami jobban skálázható. • ASP.NET kisöpri amikor a szerver memóriára van szüksége. • név – érték párban tárolódik (dictionary-style) • definiálni lehet meddig legyen elérhető • függőséget lehet beállítani

  10. Kérés(System.Web.HttpRequest) • Nincs olyan jelentősége, mint máshol • használjuk helyette a szerver vezérlőket • Hasznos elemei • QueryString • IsLocal • IsAuthenticated • IsSecureConnection • Headers,ServerVariables

  11. Válasz(System.Web.HttpResponse) • Nincs olyan jelentősége, mint máshol • Használjuk helyette a szerver vezérlőket • Hasznos elemei: • Redirect() • ContentType • OutputStream • Write() • BinaryWrite(),WriteFile()

  12. Szerver(System.Web.HttpServerUtility) • HtmlEncode(),HtmlDecode() • UrlEncode(),UrlDecode() • MapPath() • Transfer()

  13. Nyomkövetés(System.Web.TraceContext) • debuggolás, nyomkövetés • Engedélyezés: • <%@ Page … Trace="true" %> • Trace.IsEnabled = true; • Listázás időpecsét alapján, de át lehet írni TraceMode.SortByCategory • Trace.Write() ,Trace.Warn() • minden figyelőnek (Listener) elküldi • HTML kikódolt (mehet a kódba direkt) • Ha tiltott a szolgáltatás, akkor nem fut le. • trace.axd

  14. Szerver vezérlők

  15. HTML vezérlők • Alapvetően java script-el használjuk. • Egyesek a toolbox-ból is elérhetőek (drag & drop). • Mások nem, ezeket be kell gépelni. • Szerver oldali logikában használhatjuk runat=”server” • <form>tag-on belül,amely szinténrunat="server". • Jól átgondolt osztályok tokozzák a szerver oldalon. • Lehet szerver oldali eseményük. • kényelmetlen: nincs teljes kódgenerálás, kódkiegészítés. • Hasonló használat, mint a web vezérlők. • Adatkötés lehetséges a tulajdonságaira.

  16. HTML vezérlők • HTML vezérlők (HtmlControl) • HTML input vezérlők (HtmlInputControl) • valueattribútum adja a tartalmát • HTML konténer vezérlők (HtmlContainerControl) • van kezdő és záró tagjuk • InnerHtml • InnerText

  17. HTML szerver vezérlők használata • Indexer-eken keresztül • stílusText1.Style["font-size"] = "20px"; • attribútumText1.Attributes["onfocus"] = "alert(Text1.value)"; • Metódusokon keresztül Text1.Style.AddText1.Attributes.Add

  18. HTML szerver vezérlők szerver eseménykezelése • Néhány vezérlő esetén. • Szerver oldali logika kezelheti. • Kérés küldéssel jár. • Új attribútum formájában. • Ha van kliens és van szerver esemény is ugyanarra, akkor a kliens hamarabb fut le.

  19. HTML szerver vezérlők szerver eseményei • ServerClick (submit-ol is) • HtmlAnchor, • HtmlButton, • HtmlInputButton, • HtmlInputSubmit, • HtmlInputImage • ServerChange(ha volt submit) • HtmlInputText, • HtmlInputCheckBox, • HtmlInputRadioButton, • HtmlInputHidden, • HtmlSelect, • HtmlTextArea

  20. HTML vezérlők feladat I • Az oldal elejére írassa ki a kiszolgálás pontos idejét! (Ezzel ellenőrizzük, hogy ment e kérés.) • Oldal készítése, amelyen van egy select, és egy beviteli mező. • Kliens szkript segítségével: ha a select tartalma változik, frissítsük az új értékére a beviteli mezőt

  21. web szerver vezérlők • Böngészőfüggő html kimenet • Kényelmes használat, teljes kódkiegészítés. • Sajátos megjelenés, stílus. • Teljes szerver oldali esemény model. • Komplex vezérlők (pl. Calendar), melyek normál html kóddá alakulnak. • http://msdn.microsoft.com/en-us/library/bb386416(v=vs.100).aspx

  22. MultiView deklaráció <asp:MultiViewID="MultiView1"runat="server"> <asp:ViewID="View1"runat="server"> <asp:PanelID="Panel1"runat="server„BackColor="#FF6600"> <asp:RadioButtonID="RadioButton1"runat="server"/> </asp:Panel> </asp:View> <asp:ViewID="View2"runat="server"> <asp:PanelID="Panel2"runat="server"BackColor="#0066FF"> <asp:DropDownListID="DropDownList1"runat="server"> </asp:DropDownList> </asp:Panel> </asp:View> </asp:MultiView>

  23. MultiView tartalom váltás <asp:DropDownListID="DropDownList2„runat="server"AutoPostBack="True"onselectedindexchanged="DropDownList2_SelectedIndexChanged"> </asp:DropDownList> protectedvoid DropDownList2_SelectedIndexChanged(object sender, EventArgs e) { MultiView1.ActiveViewIndex = DropDownList2.SelectedIndex; }

  24. Gazdag (Rich) vezérlők • AdRotator: bannerek listájából véletlenszerűen megjelenít (XML alapján) • Calendar • MultiView, View, Wizard • Substitution • Xml megjelenít xslt segítségével

  25. Adatok ellenőrzése • <asp:RequiredFieldValidator> • <asp:RangeValidator> • <asp:CompareValidator> • <asp:RegularExpressionValidator> • <asp:CustomValidator> • <asp:ValidationSummary>

  26. Ellenőrzés szabályai • Egy vezérlőhöz több ellenőrző is lehet. • Minden vezérlőnek van egy kiemelt tulajdonsága • ValidationProperty attribútummal jelölt pl:[ValidationProperty("Text")] • Ellenőrzők ennek értékét figyelik. • A web vezérlőknek van CausesValidation tulajdonsága • ha false nincs adatellenőrzés • ha true (alapértelmezett a submit-olóknál): minden ellenőrző lefut • Szerver és kliens oldalon is lehetséges.

  27. Minden ellenőrző őseBaseValidator • ControlToValidate: referencia az ellenőrzött vezérlőre. • Display: static vagy dynamic hogyan jelenjen meg a hibaszöveg • EnableClientScript (true a default) • ErrorMessage: hibaszöveg ami a ValidationSummary-ban jelenik meg ha kell. • Text: ezen vezérlő helyén jelenik meg ha kell. • IsValid • SetFocusOnError: ráállítja a fókuszt a megjelölt vezérlőre. • Validate(): Ez hívódik automatikusan, de hívható közvetlenül is.

  28. RequiredFieldValidator <asp:TextBoxrunat="server"ID="Name"/> <asp:RequiredFieldValidatorID="RequiredFieldValidator1"runat="server" ControlToValidate="Name"ErrorMessage="Name is required" Display="dynamic">* </asp:RequiredFieldValidator>

  29. RangeValidator I MinimumValue, MaximumValue, Type

  30. RangeValidator II <asp:TextBoxrunat="server"ID="DayOff"/> <asp:RangeValidatorID="RangeValidator1"runat="server"Display="dynamic" ControlToValidate="DayOff"Type="Date" ErrorMessage="Day Off is not within the valid interval" MinimumValue="2008-08-05"MaximumValue="2008-08-20">* </asp:RangeValidator>

  31. CompareValidator • Két vezérlő tartalmát, vagy egy fix érték és a vezérlő tartalma hasonlítja össze. • ControlToCompare • ValueToCompare • Type tulajdonság

  32. CompareValidator operátor tulajdonság

  33. CompareValidator III <asp:TextBoxrunat="server"ID="Age"/> <asp:CompareValidatorID="CompareValidator1"runat="server"Display="dynamic" ControlToValidate="Age"ValueToCompare="18" ErrorMessage="You must be at least 18 years old" Type="Integer"Operator="GreaterThanEqual">* </asp:CompareValidator>

  34. CompareValidator IV <asp:TextBoxrunat="server"TextMode="Password"ID="Password"/> <asp:TextBoxrunat="server"TextMode="Password"ID="Password2"/> <asp:CompareValidatorID="CompareValidator2"runat="server" ControlToValidate="Password2"ControlToCompare="Password" ErrorMessage="The passwords don't match" Type="String"Display="dynamic"> <imgsrc="imgError.gif"alt="The passwords don't match"/> </asp:CompareValidator>

  35. RegularExpressionValidator <asp:TextBoxrunat="server"ID="Email"/> <asp:RegularExpressionValidatorID="RegularExpressionValidator1"runat="server" ControlToValidate="Email"ValidationExpression=".*@.{2,}\..{2,}" ErrorMessage="E-mail is not in a valid format"Display="dynamic">* </asp:RegularExpressionValidator>

  36. CustomValidator • Ha a beépített ellenőrzők már nem elegendőek. • Lehet kliens vagy szerver oldali vezérlés. • Ellenőrzés hasonló. Metódus 2 paraméterrel:

  37. CustomValidator <asp:TextBoxrunat="server"ID="EmpID"/> <asp:CustomValidatorID="CustomValidator1"runat="server"ControlToValidate="EmpID" ClientValidationFunction="EmpIDClientValidate"OnServerValidate="EmpIDServerValidate" ErrorMessage="ID must be a multiple of 5"Display="dynamic">* </asp:CustomValidator>

  38. CustomValidator kliens oldal <script type="text/javascript"> function EmpIDClientValidate(ctl, args) { // the value is a multiple of 5 if the modulus by 5 is 0 args.IsValid=(args.Value%5 == 0); } </script>

  39. CustomValidator szerver oldal • ServerValidate esemény protectedvoidEmpIDServerValidate(object sender, ServerValidateEventArgsargs) { try { args.IsValid= (int.Parse(args.Value) % 5 == 0); } catch { args.IsValid= false; } }

  40. ValidationSummary • Nem végez ellenőrzést. • Megjeleníti az összes vezérlő ErrorMessage tulajdonságát. • Ha ShowMessageBox igaz, akkor megjelenik a kliens oldalon. Ha nem, akkor az oldalon az adott helyen. • DisplayMode tulajdonság a megjelenés módját szabályozza: • HeaderText: Bevezető szöveget definiál.

  41. ASP.NET alkalmazás • Virtuális mappa tartozik hozzá. • Minden webapp külön alkalmazás domain. • Általában egy webapp több oldal, ezért az oldalak egy alkalmazás domain. • Közös konfiguráció, • Közös erőforrások, • Közös globális események

  42. Webapp elemei • Web formok : *.aspx • Mester oldalak: *.master • Web szervízek: *.asmx • Global.asax: globális események kezelése • Konfig fájlok: web.xml • Code-behind fájlok: forrás fájlok, melyek dll szerelvények készülnek belőlük, gépi kódként futnak. • Egyéb külső komponensek: melyek dll szerelvények készülnek belőlük, gépi kódként futnak.

  43. Webapp újraindítása • A rendszer újraindítja: • Ha már túl sokszor lefordították a fájlokat (web.config) • A mappa elérési útvonala változik, • global.asax, machine.config, web.config változott, • alkalmazás pool beállításai változtak, • bináris szerelvények változnak, • túl sok fájl változott a webappban • programból hívták a HttpRuntime.UnloadAppDomain

  44. global.asax • kéréshez kapcsolódó eseménykezelők, • bizonyos feltételekre reagáló eseménykezelők • Application_Start • Session_Start • Application_Error: kezeletlen kivétel • Session_End • Application_End • Application_Disposed: biztos, ami biztos takarítás

  45. Kérés események sorrendje

  46. Oldal életciklus szakaszaihttp://msdn.microsoft.com/en-us/library/ms178472.aspx

  47. Állapot menedzsmentViewState • Beépített mechanizmus, • de kiterjeszthető • saját elemeket is kezel, ViewState[control.ID] = érték • ki lehet olvasni kódból is explicit módon, • objektum is lehet benne • Minden változott értéket ment/tölt (nem csak szöveg). • 4.0-tól kezdődően szelektív támogatás is lehet. • Ne használjuk, ha az érték amúgy is jön!

  48. ViewState • Tiltani lehet • elemenként, • egész oldalra <%@ Page Language="C#" EnableViewState="false" ... %>, • konfigurációból:<configuration><system.web><pages enableViewState="false" /></system.web></configuration> • Öröklődik az EnableViewState (inherited)

  49. Objektum tárolása a ViewState-benObjektum sorosíthatósága [Serializable] publicclassCustomer { publicstringFirstName; publicstringLastName; public Customer(stringfirstName, stringlastName) { FirstName = firstName; LastName = lastName; } }

  50. Objektum tárolása a ViewState-benObjektum tárolása, kivétele Customercust = newCustomer(”név",”név2"); ViewState["CurrentCustomer"] = cust; cust = (Customer)ViewState["CurrentCustomer"];

More Related