Beépített vezérlők és validáció Endrődi Tamás (MCT, MCP, MCITP) GDF Informatikai Intézet vezetője SZÁMALK Oktatóközpont
Page események sorrendje Init LoadControlState, LoadViewState, LoadPostData Load Ahányszor csak meghívják az ASPX lapot Change típusú események AutoPostBack nélkül (RaisePostDataChangeEvent) Click esemény és az AutoPostback-es Change események (RaisePostbackEvent) Vagyis az az esemény, amitől az űrlap elindult PreRender, SaveControlState, SaveViewState Render, Dispose, Unload
Szerver vezérlők típusai HTML Szerver vezérlők Web Szerver vezérlők Standard vezérlők Adat vezérlők Validációs vezérlők Navigációs vezérlők Login vezérlők WebPart vezérlők
HTML vezérlők Alapértelmezés szerint szerver oldali kódból NEM elérhetők. Ha elérhetővé akarjuk tenni: Design nézetben Run As Server Control. HTML kód nézetben a runat="server" attribútum beszúrása.
HTML Szerver vezérlők HTML elemeken alapul A System.Web.UI.HtmlControls névtérben találhatók Példa: <input type="text" id="txtName" runat="server" />
Web Szerver vezérlők A System.Web.UI.WebControls névtérben találhatók Példa: <asp:TextBox id="TextBox1" runat="server">Text_to_Display </asp:TextBox> A generált html: <input name="TextBox1" type="text" value="Text_to_Display" Id="TextBox1"/>
Miből mi lesz <asp:textbox> <input type=text> <asp:button> <input type=button> <asp:imagebutton> <input type=image> <asp:checkbox> <input type=checkbox> <asp:radiobutton> <input type=radiobutton> <asp:listbox> <select size=„5”> </select> <asp:dropdownlist> <select> </select> <asp:hyperlink> <a href=„..”> </a> <asp:image> <img src=„…”> <asp:label> <span>…</span> <asp:panel> <div>…</div> <asp:table> <table>…</table>
Web Szerver vezérlő demó Demo/Default.aspx
Label Szöveget jelenít meg. Akkor jó, ha a szerver oldali kód módosítja a Text vagy más tulajdonságát. Különben… HTML formázás is megadható a Text tulajdonságban.
Image Képet jelenít meg. A kép nincs a web oldalba beágyazva. Főbb tulajdonságai: ImageUrl AlternateText ImageAlign
Hyperlink Navigálásra használható kattintható szöveg vagy kép megjelenítésével. Főbb tulajdonságai: Text ImageUrl NavigateUrl
TextBox Főbb tulajdonságai: Text TextMode: SingleLine (default), MultiLine, Password Columns Rows MaxLength Wrap AutoPostBack
Button Submit (default) button vagy Command button Főbb tulajdonságai: PostBackUrl CausesValidation OnClientClick
CheckBox Főbb tulajdonságai: Checked Text TextAlign AutoPostBack CausesValidation CheckedChanged event
RadioButton Főbb tulajdonságai: Checked GroupName Text TextAlign
Literal Statikus szöveget jelenít meg. Főbb tulajdonságai: Sima szöveg lesz és nem span tag. Főbb tulajdonságai: Text Mode: PassThrough, Encode (HTML tag-ek láthatók), Transform.
ImageButton Kattintható kép, amivel PostBack-et válthatunk ki. Image kontrol az őse. Van Click és Command eseménye.
Panel Kontrolok csoportosítására szolgál. <div> tag-et generál. Főbb tulajdonságai: DefaultButton GroupingText
Listák ListBox DropDownList CheckBoxList RadioButtonList BulletedList
AdRotator XML fájlban kell megadni a hirdetéseket: <?xml version="1.0" encoding="utf-8" ?> <Advertisements …> <Ad xmlns=""> <Keyword>…</Keyword> <ImageUrl>…</ImageUrl> <NavigateUrl>…</NavigateUrl> <AlternateText>…</AlternateText> <Impressions>100</Impressions> </Ad> <Ad xmlns=""> … </Ad> </Advertisements>
TreeView TreeNode objektumokból áll: Text Value NavigateUrl Feltöltésének módjai: Statikus adattal DataSourceID: XmlDataSource vagy SiteMapDataSource DataSource: XmlDocument vagy DataSet
Menu MenuItem objektumokból áll: Text Value NavigateUrl Feltöltésének módjai: Statikus adattal DataSourceID: XmlDataSource vagy SiteMapDataSource DataSource: XmlDocument vagy DataSet
Web Szerver vezérlő dinamikus létrehozása Példa: protected void Page_Init(object sender, System.EventArgs e){ TextBox c = new TextBox(); c.ID = "txtUserName"; c.Visible = true; form1.Controls.Add(c)); } Nem lehet ID alapján hivatkozni rá! Control c = FindControl("txtUserName");
Mi az a validálás? SOHA NE BÍZZ A FELHASZNÁLÓI INPUTBAN! Biztosítja, hogy a felhasználó által beütött adat helyes Blokkolja a továbblépést, amíg minden kontrol tartalma helyes lesz Ellenállóbbá tehető a webalkalmazás bizonyos rosszindulatú fenyegetésekkel szemben SQL injection Cross Site Scripting
SQL Injection demó Demo/SQLInjection.aspx
Felhasználó beüti az adatot Kétoldali validálás Kliens és szerver oldalon is lehet validálni Kombináljuk a kettőt Szerver oldalon ismételjük meg a kliens oldali validálást Felhasználó beüti az adatot Hibaüzenet Helyes? Nem Kliens Igen Szerver Helyes? Nem Igen Végrehajtás
Validálás Különbségek kliens és szerver oldalon Kliens oldali Gyors, de browserfüggő JavaScriptet kell írni El kell rejteni, titkosítani a validációs kódot, különben veszélyes Ha kódot kell írni, tárolni kell valahogy a szükséges infót az oldalon vagy menet közben lekérdezni külső forrásból Szerver oldali Roundtrip - lassabb A kontrolok állapotát utaztatni kell a szerver és kliens között A validációs kód nem látható A kód a szerveren fut, egyszerűbb elérni a validáláshoz szükséges infót
Validátor vezérlők RequiredFieldValidator CompareValidator RangeValidator RegularExpressionValidator CustomValidator
Validátor vezérlő használata Validátor vezérlő hozzáadása a Web Formhoz Validálni kívánt kontrol kiválasztása <asp:ControlType id="IDcontrol" runat="server" /> Validátors tulajdonságok beállítása <asp:ValidatorType id="IDvalidator" runat="server" ControlToValidate="IDcontrol" ErrorMessage=„Hibaüzenet a hibalistára" Display="Static, Dynamic vagy None" Text=„Az input kontrol mellett megjelenő szöveg"> </asp:ValidatorType>
Validátor vezérlők kombinálása Egy input vezérlőhöz több validátor vezérlőt is rendelhetünk: RequiredFieldValidator RegularExpressionValidator … Csak azérlő RequiredFieldValidator vizsgálja az üres vezérlőt
Alap validátor vezérlők beállítása RequiredFieldValidator InitialValue RangeValidator MinimumValue MaximumValue Type CompareValidator ValueToCompare vagy ControlToCompare Operator
RegularExpressionValidator <asp:RegularExpressionValidator id="emailRegexValidator" runat="server" ControlToValidate="emailTextBox" ErrorMessage= "Ilyen formában kell megadni: username@organization.xxx" ValidationExpression="\w+@\w+\.\w+" Text="*"> </asp:RegularExpressionValidator> Visual Studio 2008 beépített pattern-ek: Telefonszámok E-mail cím
Validátor vezérlők demó Demo/Validalas.aspx
CustomValidator I. Validálhatunk vele kliens és szerver oldalon is, akár egyszerre mindkettőn ClientValidationFunction OnServerValidate <asp: CustomValidator... ClientValidationFunction = "MyClientFunction" OnServerValidate = "MyServerFunction" />
CustomValidator II. Kliens oldali validálás Szerver oldali validálás <script language = "Jscript"> function MyClientFunction(source, arguments) { var value = arguments.Value; if (feltétel) arguments.IsValid = true; else arguments.IsValid = false; } </script> Szerver oldali validálás private void MyServerFunction(object sender, ServerValidateEventArgs e) { int value = Convert.ToInt16(e.Value); if (feltétel) e.IsValid = true; else e.IsValid = false;
Teljes weboldal validálása Page.IsValid használata protected void submitButton_Click(object sender, EventArgs e) { if (Page.IsValid) { /* Minden rendben, lehet az adatbázist frissíteni vagy egyéb módon feldolgozni a helyes input adatokat */ ... }
ValidationSummary vezérlő Az oldalon található összes Validátor vezérlő ErrorMessage tulajdonságának tartalmát összegyűjti. <asp:ValidationSummary id="mySummary" runat="server" HeaderText=„Ezek a hibák vannak az oldalon:" ShowSummary="True" DisplayMode="List"/>