Documente Academic
Documente Profesional
Documente Cultură
NET
09.05.2012 1/28
ASP.NET
Introducere in ASP.NET Controale Web Pagina in ASP.NET Timpul de viata al paginii Procesarea paginii Controale de tip lista Structura unei aplicatii ASP.NET
Bibliografie Pro ASP.NET 3.5 in C# 2008, Second Edition: -2007 by Matthew MacDonald and Mario Szpuszta
Ioan Asiminoaei
ASP.NET
09.05.2012 2/28
ASP.NET
Caracteristici ASP.NET: Integrat cu .NET Framework Este compilat, nu interpretat Pagina este compilata cand este accesata prima data. Este multilimbaj Este gazduit de Common Language Runtime Este orientat-obiect Ruleaza pe orice browser Usor de configurat si distribuit Formulare Web Procesare pagina
Aplicatiile web se executa pe server. Cerintele clientului sunt procesate pe server folosind o tehnica numita postback, care trimite pagina pe server cand sunt indeplinite anumite conditii. Dupa ce primeste pagina, ASP.NET genereaza evenimentele pe partea de server pentru a notifica codul (a apela metodele atasate evenimentelor). Aplicatiile Web sunt fara stare. Dupa ce pagina este retransmisa clientului aceasta este distrusa din memoria serverului. Exista mecanisme ce asigura o anumita persistenta a datelor, cel mai cunoscut fiind view state , ce pastreaza informatia in campuri ascunse (hidden).
Ioan Asiminoaei
ASP.NET
09.05.2012 3/28
Formulare HTML
In HTML forma cea mai simpla de a trimite date de la client la server o constituie utilizarea formularelor (tag <form>). Un formular poate contine mai multe controale. Exemplu
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Programmer Questionnaire</title> </head> <body> <form method="post" action="page.aspx"> <div> Enter your first name: <input type="text" name="FirstName" /> <br /> Enter your last name: <input type="text" name="LastName" /> <br /><br /> You program with: <br /> <input type="checkbox" name="CS" />C# <br /> <input type="checkbox" name="VB" />VB .NET <br /><br /> <input type="submit" value="Submit" id="OK" /> </div> </form> </body> </html>
Cand utilizatorul face clic pe butonul OK, browser-ul colecteaza informatia din controale, o concateneaza intr-un strig si este trimsa serverul folosind operatia HTTP POST. Informatia trimisa este o serie de perechi nume/valoare separate prin &. Pentru controalele ce au valori booleene se va transmite numai valoarea on cand aceste controale sunt activate.
FirstName=Matthew&LastName=MacDonald&CS=on&VB=on
Daca schimbam pagina in ASP.NET, putem determina valoarea din control folosind sintaxa C#.
string firstName = txtFirstName.Text;
In ASP.NET toate controalele sunt plasate intr-un singur tag <form>, tag marcat cu atributul runat=server.
Ioan Asiminoaei
ASP.NET
09.05.2012 4/28
Postback automat
In ASP.NET actiunile le genereaza clientul si serverul proceseaza codul corespunzator. Anumite evenimente cum ar fi miscarea mouse-ului nu sunt tratate implicit. Nu mai exista acea bucla de mesaje ce caracterizeaza o aplicatie Window. Evenimentele sunt regenerate pe partea de server numai dupa ce s-a facut un postback al paginii. Exista controale ce au posibilitatea de a face postback automat, acest lucru insemnand ca la generarea unui eveniment al controlului, continutul paginii este trims catre server. Controalele trebuie sa aiba setata proprietatea
AutoPostBack = true
Ioan Asiminoaei
ASP.NET
09.05.2012 5/28
Controalele ce au AutoPostBack = true vor apela metoda __doPostBack() folosind atributele onclick sau onchange.
View State
De fiecare data cand o pagina este trimisa catre server, acesta recreaza obiectele din pagina pornind de la definitia acesteia data in fisierul .aspx. Eventualele modificari ale proprietatilor controalelor sunt luate dintr-un camp ascuns ce pastreaza ultima stare a paginii. Aceasta informatie constituie ceea ce numeste view state pentru pagina. Informatiile sunt pastrate sub forma de perechi cheie/valoare. Proprietatea EnableViewState = {true, false}.
Conformitate cu XHTML
Controalele web in ASP.NET sunt conforme cu standardul XHTML 1.1. ASP.NET reda controalele flosind marcaj conform cu XHTML, adica sunt respectate urmatoarele reguli: Tag si numele atributelor trebuie sa fie lowercase. Toate elementele trebuiesc inchise (<p></p>). Toate valorile atributelor trebuie sa fie furnizate intre ghilimele (runat=server). Trebuie folosit id pentru attribute si nu name. XHTML nu suporta frame si formatare fara CSS.
Ioan Asiminoaei
ASP.NET
09.05.2012 6/28
Ioan Asiminoaei
ASP.NET
09.05.2012 7/28
Validare
Proprietatea Page.IsValid.
Tratare evenimente
In acest moment pagina este complet incarcata si validata. Evenimentele ASP.NET sunt : Evenimente cu raspuns imediat : clic pe un buton, imagine, link, etc. Evenimente de tip Change : schimbare selectie intr-un control sau text intr-un TextBox. Trebuie sa avem declarat AutoPostBack = true.
Asociere data
Cand folosim controale surse de date, ASP.NET executa automat update si cereri asupra sursei de date ca parte a ciclului de viata al paginii. Orice modificari (insert, update, delete) sunt executate dupa executia tuturor evenimentelor dar inainte de evenimentul Page.PreRender. Dupa emiterea evenimentului Page.PreRender controalele surse de date executa cererile si insereaza datele in controalele ce folosesc sursa de date.
Cleanup
Eveniment Pade.Dispose.
Ioan Asiminoaei
ASP.NET
09.05.2012 8/28
In etapa urmatoare adaugam metode pentru evenimentele urmatoare: Page.Init, Page.Load, Page.PreRender, Page.Unload, si Button.Click.
private void Page_Load(object sender, System.EventArgs e) { lblInfo.Text += "Page.Load event handled.<br />"; if (Page.IsPostBack) { lblInfo.Text += "<b>This is not the first time you've seen this page.</b><br />"; } } private void Page_Init(object sender, System.EventArgs e) { lblInfo.Text += "Page.Init event handled.<br />"; } private void Page_PreRender(object sender, System.EventArgs e) { lblInfo.Text += "Page.PreRender event handled.<br />"; } private void Page_Unload(object sender, System.EventArgs e) { // This text never appears because the HTML is already // rendered for the page at this point. lblInfo.Text += "Page.Unload event handled.<br />"; } Codul pentru evenimentul clic al butonului: protected void Button1_Click(object sender, System.EventArgs e) { lblInfo.Text += "Button1.Click event handled.<br />"; }
Ioan Asiminoaei
ASP.NET
09.05.2012 9/28
Pagina este un container pentru controalele pe care le contine. Putem vizualiza controalele dintr-o pagina folosind urmatorul cod (in Page_Load):
foreach (Control control in Page.Controls) { Response.Write(control.GetType().ToString() + " - <b>" + control.ID + "</b><br />"); } Response.Write("<hr />");
Clasa Page
Toate formularele web sunt instante ale clasei Page.
Cateva proprietati importante ale acestei clase: Session Application Cache Request ; Request.QueryString[ id ] ; Response ; Response.Write() ; Response.Redirect( page.aspx ) ; Response.Redirect(http://...) Server ; Server.Transfer() ; HtmlEncode ; HtmlDecode ; UrlEncode ; UrlDecode ; MapPath ; User Trace
Ioan Asiminoaei
ASP.NET
09.05.2012 10/28
Controale server
Controalele server sunt clase in .NET Framework ce reprezinta elemente vizuale pe un formular web. Tipuri de controale server Controale server HTML: clase ce implementeaza elementele standard HTML. Pentru a schimba un element ordinar HTML intr-un control server trebuie adaugat atributul
runat=server.
Controale Web: sunt ca si HTML dar mai usor de folosit. Controale avansate: au posibilitatea de a genera mult mai mult markup HTML. Exemple: controalele Calendar, AdRotator si TreeView. Controale de validare: folosite in validarea datelor din alte controale din cadrul paginii. Controale pentru date: afiseaza o cantitate mare de date (grid, list). Suporta template, editare, sortare si paginare. Controale de navigare: navigare de la o pagina la alta. Controale Login: pentru autentificare la o baza de date.
Controls returneaza colectia de controale descendente. Colectia Page.Controls contine controalele din pagina. EnableViewState - controlul isi memoreaza starea? ID ID control Page returneaza o referinta la obiectul pagina ce contine controlul. Parent returneaza o referinta la parintele controlului. Visible : bool (true, false). DataBind() Asociaza controlul si toate controalele descendente la sursa de date specificata.
Ioan Asiminoaei
ASP.NET
09.05.2012 11/28
Controale Web
Clasa de baza WebControl derivate din Control. Proprietati importante AccessKey BackColor BorderColor BorderStyle - Dashed, Dotted, Double, Groove, Ridge, Inset, Outset, Solid, None. BorderWidth CssClass Enabled
HTML si proprietati
<input type="submit"/> or <input type="button"/> Text, CausesValidation, PostBackUrl, ValidationGroup, Click event
<asp:CheckBox>
<asp:FileUpload>
<asp:HiddenField>
<asp:HyperLink>
<asp:Image>
<asp:ImageButton>
Ioan Asiminoaei
ASP.NET
<asp:ImageMap>
09.05.2012 12/28
<map> HotSpotMode, HotSpots (collection), AlternateText, ImageAlign, ImageUrl
<asp:Label>
<asp:LinkButton>
<asp:Panel>
<asp:RadioButton>
<asp:Table>
<asp:TableCell>
<asp:TableRow>
<asp:TextBox> <textarea>...</textarea>
Exemplu
<asp:TextBox runat="server" ID="TextBox1" Text="This is a test" ForeColor="red" BackColor="lightyellow" Width="250px" Font-Name="Verdana" Font-Bold="True" Font-Size="20" />
Ioan Asiminoaei
09.05.2012 13/28
Enumerari
In cod se foloseste sintaxa C# (BorderStyle.Dashed) iar in aspx nu se include numele enumerarii:
<asp:TextBox BorderStyle="Dashed" Text="Border Test" id="txt" runat="server" />
Culori
In cod enumerarea Color. In aspx numele culorii.
ctrl.ForeColor = Color.Crimson; <asp:TextBox ForeColor="Red" Text="Test" id="txt" runat="server" /> <asp:TextBox ForeColor="#ff50f" Text="Test" id="txt" runat="server" />
Ioan Asiminoaei
ASP.NET
09.05.2012 14/28
Focus
DefaultFocus
<form id="Form1" DefaultFocus="TextBox2" runat="server">
Focusul se realizeaza cu ajutorul unei metode JavaScript, WebForm.AutoFocus(). Metoda este furnizata in mod automat de ASP.NET. Codul din aceasta metoda urmareste ideea de mai jos:
function WebForm_AutoFocus(focusId) { // Find the element based on the ID (code differs based on browser). var targetControl; if (__nonMSDOMBrowser) { targetControl = document.getElementById(focusId); } else { targetControl = document.all[focusId]; } // Check if the control can accept focus or contains a child that can. var focused = targetControl; if (targetControl != null && (!WebForm_CanFocus(targetControl)) ) { focused = WebForm_FindFirstFocusableChild(targetControl); } // If there is a valid control, try to apply focus and scroll it into view. if (focused != null) { try { focused.focus(); focused.scrollIntoView(); if (window.__smartNav != null) { window.__smartNav.ae = focused.id; } } catch (e) { } } }
Ioan Asiminoaei
ASP.NET
09.05.2012 15/28
Butonul implicit
Butonul implicit executa metoda atasata evenimentului click cand s-a apasat tasta Enter. Este la nivel de pagina web, iar in cadrul paginii poate fi la nivel de Panel. In <form> se foloseste proprietatea DefaultButton in care se specifica ID controlului.
<form id="Form1" DefaultButton="cmdSubmit" runat="server">
Butonul implicit trebuie sa fie un control ce implementeaza interfata IButtonControl. Controalele web Button, IinkButton si ImageButton implementeaza aceasta interfata. Controalele server HTML nu implementeaza IButtonControl. Panel cu bare de navigare (scroll) Controlul Panel are posibilitatea de scroll. Se foloseste proprietatea ScrollBars = {Vertical, Horizontal, Both, Auto}.
<asp:Panel ID="Panel1" runat="server" Height="116px" Width="278px" BorderStyle="Solid" BorderWidth="1px" ScrollBars="Auto"> This scrolls. <br /><br /> <asp:Button ID="Button1" runat="server" Text="Button" /> <asp:Button ID="Button2" runat="server" Text="Button" /> <br /> ... </asp:Panel>
Ioan Asiminoaei
ASP.NET
09.05.2012 16/28
Evenimentul clic si butonul ImageButton Evenimentul clic pe acest buton trimite in al doilea parametru un obiect ImageClickEventArgs ce are proprietatile X si Y (coordonatele unde s-a facut clic pe imagine). Se pot identifica astfel puncte de pe o harta si sa se execute un cod specific zonei.
protected void ImageButton1_Click(object sender, System.Web.UI.ImageClickEventArgs e) { lblResult.Text = "You clicked at (" + e.X.ToString() + ", " + e.Y.ToString() + "). "; // Check if the clicked point falls in the rectangle described // by the points (20,20) and (275,100), which is the button surface. if ((e.Y < 100) && (e.Y > 20) && (e.X > 20) && (e.X < 275)) { lblResult.Text += "You clicked on the button surface."; } else { lblResult.Text += "You clicked the button border."; } }
Controalele List
Controale ce au ca articole o colectie de obiecte (ListBox, DropDownList, GridView, etc.).
<asp:DropDownList>
In HTML, tag <select> cu atributul size="x" unde x este numarul de articole vizibile.
<asp:CheckBoxList>
<asp:RadioButtonList> <asp:BulletedList>
In HTML, tag <ul> sau <ol>. Se poate folosi si pentru a crea o lista de hyperlink-uri. Membri AutoPostBack = true => actioneaza la schimbarea selectiei curente. Items returneaza o colectie de articole ListItem.
Ioan Asiminoaei
ASP.NET
09.05.2012 17/28
SelectedIndex returneaza sau seteaza indexul articolului selectat. Pentru liste ce suporta selectia multipla trebuie scanata intreaga colectie pentru a determina articolele selectate (verificare proprietate Selected). SelectedItem returneaza o referinta la prmul articol ListItem selectat. DataSource - se seteaza la un obiect ce contine informatii ce dorim sa le afisam (DataSet, DataTable sau colectii). Cand se apeleaza DataBind() lista va fi completata cu obiecte din acea colectie. DataMember se foloseste impreuna cu asocierea de date, cand sursa de date contine mai mult de o tabela. DataMember indica ce tabela se va folosi. DataTextField indica ce proprietate sau camp din sursa de date va fi folosit ca text pentru articol.
DataValueField indica ce proprietate sau camp va fi folosit ca valoare pentru articol (nu e afisat dar poate fi citit in cod). DataTextFormatString seteaza formatarea stringului folosit pentru redarea articolului. Eveniment: SelectedIndexChanged la schimbarea selectiei.
Exemplu
<form id="form1" runat="server"> <div> <asp:ListBox runat="server" ID="Listbox1" SelectionMode="Multiple" Rows="5"> <asp:ListItem Selected="true">Option 1</asp:ListItem> <asp:ListItem>Option 2</asp:ListItem> </asp:ListBox> <br /><br /> <asp:DropDownList runat="server" ID="DropdownList1"> <asp:ListItem Selected="true">Option 1</asp:ListItem> <asp:ListItem>Option 2</asp:ListItem> </asp:DropDownList> <br /><br /> </div> </form>
Ioan Asiminoaei
ASP.NET
09.05.2012 18/28
- controalele vor fi aranjate intr-o tablela (implicit) sau inline. Valori posibile: Table sau Flow.
RepeatDirection = {Horizontal, Vertical} RepeatColumns - numarul de coloane cand RepeatLayout=Table. CellPadding, CellSpacing, TextAlign folosite
cand RepeatLayout=Table.
Exemplu
<form id="form1" runat="server"> <div> <asp:ListBox runat="server" ID="Listbox1" SelectionMode="Multiple" Rows="5"> <asp:ListItem Selected="true">Option 1</asp:ListItem> <asp:ListItem>Option 2</asp:ListItem> </asp:ListBox> <br /><br /> <asp:DropDownList runat="server" ID="DropdownList1"> <asp:ListItem Selected="true">Option 1</asp:ListItem> <asp:ListItem>Option 2</asp:ListItem> </asp:DropDownList> <br /><br /> <asp:CheckBoxList runat="server" ID="CheckboxList1" RepeatColumns="3" > <asp:ListItem Selected="true">Option 1</asp:ListItem> <asp:ListItem>Option 2</asp:ListItem> </asp:CheckBoxList> <br /> <asp:RadioButtonList runat="server" ID="RadiobuttonList1" RepeatDirection="Horizontal" RepeatColumns="2"> <asp:ListItem Selected="true">Option 1</asp:ListItem> <asp:ListItem>Option 2</asp:ListItem> </asp:RadioButtonList> <asp:Button id="Button1" runat="server" Text="Submit" OnClick="Button1_Click"/> </div> </form>
Ioan Asiminoaei
ASP.NET
09.05.2012 19/28
Controlul BulletedList
Este echivalent cu <ul> sau <ol>. Articolele se ataseaza la control folosind proprietatea Items.
Proprietati
BulletStyle
determina stilul de marcare al listei. Valori posibile: Numbered, LowerAlpha, UpperAlpha, LowerRoman, UpperRoman, Disc, Circle, Square, CustomImage (caz in care trebuie setata proprietatea BulletImageUrl). seteaza prima valoare din lista (cu care se incepe marcarea eleentelor).
BulletImageUrl
FirstBulletNumber DisplayMode
Ioan Asiminoaei
ASP.NET
09.05.2012 20/28
Pentru controalele de tip lista proprietatea ce se valideaza este Value, care nu e afisata in browser. Va trebui sa folosim atributul Value pentru validare. Cand proiectam un control web derivat din WebControl putem specifica proprietatea ce va fi validata.
[ValidationProperty("Text")] public class FancyTextBox : WebControl {...}
Procesul de validare
Proprietatea CausesValidation = {true, false}. Se poate folosi validarea controalelor pentru a verifica o pagina in mod automat cand aceasta este trimisa la server sau manual in cod. Validarea automata presupune folosirea proprietatii CausesValidation pentru controale. Daca CausesValidation = false atunci ASP.NET va ignora validarea controalelor, pagina va fi returnata si codul de tratare al evenimentelor va rula normal. Daca CausesValidation = true (valoare implicita), ASP.NET va valida in mod automat pagina, se valideaza fiecare control din pagina si daca o validare nu se executa cu succes ASP.NET va returna pagina cu informatii despre erori (sroare). Clasa BaseValidator Membri ControlToValidate indica controlul ce va fi validatt. Display = {Static, Dynamic} indica modul cum va fi afisata eroarea. EnableClientScript = {true, false} daca este validare pe partea de client sau nu. True implicit. Enabled = {true, false} enable / disable validare. ErrorMessage mesajul de eroare afisat de ValidationSummary. Text textul erorii afisat controlul de validare. IsValid determina daca valoarea asociata controlului de intrare este valida sau nu. Poate fi realizata pe partea de client si pe partea de server. Observatie Putem verifica proprietatea Page.IsValid pentru a sti daca toate controalele de intrare din pagina sunt valide.
Ioan Asiminoaei
ASP.NET
09.05.2012 21/28
SetFocusOnError - focus mutat pe campul ce contine eroarea. Primul control setat, primul luat in considerare. ValidationGroup validare pentru anumite controale grupate. Validate() metoda revalideaza controalele si actualizeaza proprietatea IsValid.
Controlul RequiredFieldValidator
<asp:TextBox runat="server" ID="Name" /> <asp:RequiredFieldValidator runat="server" ControlToValidate="Name" ErrorMessage="Name is required" Display="dynamic">* </asp:RequiredFieldValidator>
Controlul RangeValidator
<asp:TextBox runat="server" ID="DayOff" /> <asp:RangeValidator runat="server" Display="dynamic" ControlToValidate="DayOff" Type="Date" ErrorMessage="Day Off is not within the valid interval" MinimumValue="08/05/2008" MaximumValue="08/20/2008">* </asp:RangeValidator>
Controlul CompareValidator
<asp:TextBox runat="server" ID="Age" /> <asp:CompareValidator runat="server" Display="dynamic" ControlToValidate="Age" ValueToCompare="18" ErrorMessage="You must be at least 18 years old" Type="Integer" Operator="GreaterThanEqual">* </asp:CompareValidator>
sau
<asp:TextBox runat="server" TextMode="Password" ID="Password" /> <asp:TextBox runat="server" TextMode="Password" ID="Password2" /> <asp:CompareValidator runat="server" ControlToValidate="Password2" ControlToCompare="Password" ErrorMessage="The passwords don't match" Type="String" Display="dynamic"> <img src="imgError.gif" alt="The passwords don't match" /> </asp:CompareValidator>
Controlul RegularExpressionValidator
<asp:TextBox runat="server" ID="Email" /> <asp:RegularExpressionValidator runat="server" ControlToValidate="Email" ValidationExpression=".*@.{2,}\..{2,}" ErrorMessage="E-mail is not in a valid format" Display="dynamic">* </asp:RegularExpressionValidator>
Ioan Asiminoaei
ASP.NET
09.05.2012 22/28
Character Escapes Description Ordinary characters Characters other than .$^{[(|)*+?\ match themselves. \b Matches a backspace. \t Matches a tab. \r Matches a carriage return. \v Matches a vertical tab. \f Matches a form feed. \n Matches a newline. \ If followed by a special character (one of .$^{[(|)*+?\), this character escape matches that character literal. For example, \+ matches the + character. Character Class Description . Matches any character except \n. [aeiou] Matches any single character specified in the set. [^aeiou] Matches any character not specified in the set. [3-7a-dA-D] Matches any character specified in the specified ranges (in the example the ranges are 37, ad, AD). \w Matches any word character; that is, any alphanumeric character or the underscore (_). \W Matches any nonword character. \s Matches any whitespace character (space, tab, form feed, newline, carriage return, or vertical feed). \S Matches any nonwhitespace character. \d Matches any decimal character. \D Matches any nondecimal character. Using more advanced syntax, you can specify that a certain character or class of characters must be present at least once, or between two and six times, and so on. The quantifiers are placed just after a character or a range of characters and allow you to specify how many times the preceding character must be matched (see Table 4-19). Character Class Description . Matches any character except \n. [aeiou] Matches any single character specified in the set. [^aeiou] Matches any character not specified in the set. [3-7a-dA-D] Matches any character specified in the specified ranges (in the example the ranges are 37, ad, AD). \w Matches any word character; that is, any alphanumeric character or the underscore (_). \W Matches any nonword character. \s Matches any whitespace character (space, tab, form feed, newline, carriage return, or vertical feed). \S Matches any nonwhitespace character. \d Matches any decimal character. \D Matches any nondecimal character. Quantifier Description * Zero or more matches + One or more matches ? Zero or one matches {N} N matches {N,} N or more matches {N,M} Between N and M matches (inclusive)
Ioan Asiminoaei
ASP.NET
09.05.2012 23/28
Controlul CustomValidator
Pe partea de client
<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>
Controlul ValidationSummary
Nu executa actiuni de validare ci prezinta un rezumat al erorilor aparute in procesul de validare. Daca proprietatea ShowMessageBox = true rezumatul erorilor este afisat pe partea de client intr-o caseta de dialog JavaScript sau pe pagina daca ShowSummary = true, atentie mai trebuie setata proprietatea DisplayMode in acest din urma caz.
DisplyMode = {SingleParagraph, List, BulletList}. <asp:ValidationSummary runat="server" ID="Summary" ShowSummary="true" DisplayMode="BulletList" HeaderText="<b>Please review the following errors:</b>" />
Ioan Asiminoaei
ASP.NET
09.05.2012 24/28
Exemplu cu folosirea metodei Validate(). Ideea este de a adauga un buton cu CausesValidation=false. Cand se face clic pe buton se valideaza pagina manual sau se apeleaza metoda Validate() si se verifica prprietatea IsValid.
protected void cmdOK_Click(Object sender, EventArgs e) { // Validate the page. this.Validate(); if (!this.IsValid) { string errorMessage = "<b>Mistakes found:</b><br />"; // Create a variable to represent the input control. TextBox ctrlInput; // Search through the validation controls. foreach (BaseValidator ctrl in this.Validators) { if (!ctrl.IsValid) { errorMessage += ctrl.ErrorMessage + "<br />"; ctrlInput = (TextBox)this.FindControl(ctrl.ControlToValidate); errorMessage += " * Problem is with this input: "; errorMessage += ctrlInput.Text + "<br />"; } } lblMessage.Text = errorMessage; } }
Ioan Asiminoaei
ASP.NET
09.05.2012 25/28
Controale avansate
Elemente complexe de interfata; sunt controale complet diferite de cele din HTML. ASP.NET include numeroase controale avansate cum ar fi : controale de tip lista, de navigare, de securitate si controale pentru portaluri web. Urmatoarele controale nu intra in nici una din categoriile de mai sus. AdRotator: afiseaza bannere definite intr-un fisier XML. Calendar: selectie data calendaristica. MultiView, View, si Wizard: lucreaza asemanator ca Panel si permit comutarea intre grupurile de controale din pagina. Substitution: este un placeholder ce permite personalizarea output-ului din ASP.NET. Xml: are ca intrare un fisier XML si un fisier de stiluri XSLT si afiseaza rezultatul in browser.
Ioan Asiminoaei
ASP.NET
09.05.2012 26/28
Director
Ioan Asiminoaei
ASP.NET
09.05.2012 27/28
Application_AuthenticateRequest()
Application_AuthorizeRequest() : apelata
dupa ce utilizatorul a fost autentificat, e momentul de a verifica drepturile urilizatorului. Se pot atribui privilegii speciale in aceasta etapa. impreuna cu cache. Pagina se ia din cache determinarii informatiilor despre fara a executa alt cod.
Application_ResolveRequestCache() : folosita
cale de a fi serializata din colectia Session astfel incat aceasta este disponibila pentru noua cerere.
Application_UpdateRequestCache() : apelata inainte ca informatia sa fie adaugata in cache. Application_EndRequest() : apelata la sfarsitul cererii dar inainte ca obiectele sa fie eliminate.
Evenimente ce nu se lanseaza la fiecare cerere Application_Start(): start aplicatie. Se poate scrie cod pentru initializare. Session_Start(): start o noua sesiune. Initializare informatii specifice utilizatorului. Application_Error(): cand apare o eroare in aplicatie. Session_End(): la terminarea sesiunii unui client. Se apeleaza numai daca folosim o sesiune in-proces (mod InProc). Cod pentru curatare. Application_End(): apelata inainte ca aplicatia sa se termine.
Ioan Asiminoaei
ASP.NET
09.05.2012 28/28
Application_Disposed(): Se poate verifica daca resursele critice au fost eliberate. Ceea ce tine in general de cod unmanaged.
Configurare ASP.NET
Se realizeaza prin intermediul fisierelor XML. Acestea nu sunt niciodata blocate si sunt usor de accesat si replicat (cu existenta drepturilor necesare). Fisierul machine.config Se gaseste in directorul C:\windows\Microsoft.Net\Framework\versiune_net\Config. Este bine comentat si poate fi folosit pentru crearea unui fisier de configurare propriu. Fisierul web.config Fiecare aplicatie web mosteneste setari din machine.config si fisierul web.config din radacina directorului virtual. Scheletul de baza al fisierului web.config este:
<?xml version="1.0"?> <configuration> <appSettings /> <connectionStrings /> <system.web> <!-- ASP.NET configuration sections go here. --> </system.web> </configuration>
Ioan Asiminoaei