Sunteți pe pagina 1din 33

ASP.

NET

29.03.2015 1/33

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

29.03.2015 2/33

ASP.NET
Caracteristici ASP.NET:
 Integrat cu .NET Framework.
 Compilat, nu interpretat.
 Pagina este compilata cand este accesata prima data.
 Multilimbaj.
 Gazduit de Common Language Runtime.
 Orientat-obiect.
 Ruleaza pe orice browser.
 Usor de configurat si distribuit .
Caracteristicile principale ale unei aplicatii web
Aplicatiile web se executa pe server.
Cererile 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

29.03.2015 3/33

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, in fapt este un
container pentru controale.
Exemplu
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs"
Inherits="ExASP.WebForm1" %>
<!DOCTYPE html>
<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:&nbsp;
<input type="text" name="FirstName" />
<br />
Enter your last name:&nbsp;
<input type="text" name="LastName" />
<br />
<br />
You program with:
<br />
&nbsp;&nbsp;&nbsp;
<input type="checkbox" name="CS" />C#
<br />
&nbsp;&nbsp;&nbsp;
<input type="checkbox" name="VB" />VB .NET
<br />
<br />
<input type="submit" value="Submit" id="OK" />
</div>
</form>
</body>
</html>

Observatie
Acest formular contine urmatoarele controale: doua TextBox-uri, doua CheckBox-uri si un
Button. Operatia folosita de formular este POST.
Propritatea name a controlului permite accesarea informatiei din control (cod C#).
Pe partea clientului se va afisa pagina:

Ioan Asiminoaei

ASP.NET

29.03.2015 4/33

Cand utilizatorul face clic pe butonul OK (textul din buton este Submit), browser-ul
colecteaza informatia din controale, o concateneaza intr-un string si apoi o trimite serverului
folosind operatia HTTP POST.
Informatia trimisa contine 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.
Exemplu de informatie transmisa catre server.
FirstName=Matthew&LastName=MacDonald&CS=on&VB=on

Pentru paginile din ASP.NET, putem determina valoarea din controale folosind sintaxa C#.
string firstName = FirstName.Text;

sau ceva de genul:


string firstName = Request.Form["FirstName"];

Observatie
In exemplul de mai sus FirstName (cu sau fara ghilimele) este ID-ul controlului.
In ASP.NET toate controalele sunt plasate intr-un singur tag <form>, tag marcat cu atributul
runat="server". Controlul <form> este un container de controale.

Ioan Asiminoaei

ASP.NET

29.03.2015 5/33

Anatomia unei aplicatii ASP.NET

Toate paginile web dintr-o aplicatie web partajeaza aceleasi resurse de memorie, date
globale la nivel de aplicatie, date la nivel de sesiune, date din cache.

Toate paginile web dintr-o aplicatie web partajeaza aceleasi setari de configurare. Pot
fi realizate setari diferite pentru subdirectoare individuale ale aceluiasi director virtual.

Toate aplicatiile web genereaza evenimente globale la nivel de aplicatie in diferite


etape ale executiei. Se foloseste fisierul Global.asax.

Directorul virtual este structura de baza pentru o aplicatie ASP.NET.

Aplicatiile ASP.NET pot contine urmatoarele :

Pagini Web (fisiere .aspx) .


Servicii Web (fisiere .asmx) comunicare cu aplicatii de pe alte platforme. Servicii
WCF.
Fisiere ce contin cod (code-behind)
Fisier de configurare (web.config).
global.asax cod pentru evenimente generate la nivel de aplicatie.
Alte componente.

Structura de directoare a aplicatiei


Fiecare aplicatie trebuie sa aiba o structura de directoare si subdirectoare.
In plus fata de acestea, ASP.NET defineste urmatoarele directoare :
Director

Descriere
Contine assemblies .NET precompilat (in mod abisnuit DLL)
folosite de aplicatia ASP.NET.
App_Code
Contine fisiere cod sursa ce sunt compilate in mod dinamic pentru a
fi folosite in aplicatie. Codul compilat nu apare in directorul bin.
Daca se foloseste modelul de proiect si nu cel Web Site atunci acest
director nu este necesar.
App_GlobalResources Mentine resursele globale accesibile fiecarei pagini din aplicatie.
App_LocalResources
Resurse numai pentru o pagina dedicata.
App_WebReferences
Mentine referinte la serviciile Web folosite de aplicatie. Fisiere
WSDL si documente UDDI (Universal Description Discovery and
Integration).
App_Data
Rezervat pentru baze de date si fisiere XML.
App_Browsers
Contine definitiile browser-ului memorat in fisiere XML.
App_Themes
Contine themes folosite de aplicatie.
Bin

Ioan Asiminoaei

ASP.NET

29.03.2015 6/33

Fisierul aplicatie global.asax


Aici se scriu metodele si codul pentru tratarea evenimentelor globale la nivel de aplicatie.
Clientul nu acceseaza acest fisier.
Fisierul este optional.
Acest fisier nu contine tag-uri HTML sau ASP.NET, ci metode cu un nume predefinit.

Evenimentele aplicatiei
 Evenimente ce apar la fiecare cerere.
 Evenimente ce apar sub anumite conditii.

Evenimente ce apar la fiecare cerere

Application_BeginRequest() : apelata la startul fiecarei cereri.

Application_AuthenticateRequest() : apelata inainte de autentificare.

Application_AuthorizeRequest() : apelata dupa ce utilizatorul a fost

autentificat, e momentul de a verifica drepturile urilizatorului. Se pot atribui privilegii


speciale in aceasta etapa.

Application_ResolveRequestCache() : folosita impreuna cu cache. Pagina se

ia din cache fara a executa alt cod.

Application_AquireRequestState() : apelata inaintea determinarii

informatiilor despre sesiune si folosita pentru a popula colectia Session.

Application_PreRequestHandlerExecute() : apelata inainte ca HTTP sa execute


cererea.

Application_ReleaseRequestState() : apelata cand informatia specifica despre


sesiune este pe 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. Loc bun pentru codul de curartare.

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.

Ioan Asiminoaei

ASP.NET

29.03.2015 7/33

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.

Application_Disposed(): Se poate verifica daca resursele critice au fost eliberate.


Ceea ce tine in general de cod unmanaged.

Configurare ASP.NET
Configurarea se realizeaza prin intermediul fisierelor XML.
Aceste fisiere 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>

In ASP.NET 3.5 s-au adaugat sectiuni noi la fisierul de configurare.


<?xml version="1.0"?>
<configuration>
<configSections />
<appSettings />
<connectionStrings />
<system.web />
<system.codedom />
<system.webServer />
</configuration>

Ioan Asiminoaei

ASP.NET

29.03.2015 8/33

Etapele procesarii formelor web


Etapele in tratarea unei cereri (pagini) sunt:
1.
2.
3.
4.
5.
6.
7.

Cerere client.
Initializare pagina in framework.
Executie cod initializare.
Validare.
Tratare evenimente.
Raspuns catre client.
Stergere obiecte din server (Cleanup).

2. Initializare pagina in framework


Evenimentul Page.Init - metoda Page_Init().
Acest eveniment se genereaza la prima cerere a paginii de catre client. Dupa ce a accesat
pagina, daca clientul executa diverse actiuni in cadrul paginii si retrimite pagina la server,
atunci acest eveniment nu se mai genereaza. Metodele de redirectare a paginii
Response.Redirect(pagina) sau Server.Transfer(pagina) sunt tratate ca fiind prima
cerere efectuata catre pagina accesata, deci evenimentul Page.Init se genereaza.

3. Initializare cod utilizator


Eveniment Page.Load metoda Page_Load().
Acest eveniment se genereaza ori de cate ori este accesata pagina. Codul de initializare din
Page_Load() trebuie sa ia in considerare valoarea proprietatii IsPostBack.
Proprietatea IsPostBack furnizeaza informatii despre faptul ca pagina este prima data
accesata sau nu.
Proprietatea IsPostBack are valoarea false, la prima cerere a paginii.
if (!IsPostBack)
{
// Initializare controale la prima tratare a paginii
FirstName.Text = "Enter your name here";
}

4. Validare pagina
Proprietatea Page.IsValid.
Page.IsValid nu poate fi apelata inainte ca validarea sa fi avut loc. Page.IsValid poate fi
testata intr-un handler pentru un control ce are proprietatea CausesValidation=True si a
initiat un postback sau dupa apelul lui Page.Validate(string). In cazul cand nu se respecta
aceste reguli, mesajul este cel de mai jos.

Ioan Asiminoaei

ASP.NET

29.03.2015 9/33

Page.Validate(string) Instructs any validation controls included on the page to validate


their assigned information. This method is invoked when a user clicks any ASP.NET server
control that has the CausesValidation property set to true, which is the default. These include
the Button, ImageButton, and LinkButton Web server controls, the HtmlInputButton,
HtmlInputImage, and HtmlButton HTML server controls, and controls that can automatically
post back to the server such as the TextBox, CheckBox, ListControl, and BulletedList
controls.
To disable validation for any button control on the page, set the button control's
CausesValidation property to false.

5. Tratare evenimente
In acest moment pagina este complet incarcata si validata.
Evenimentele ASP.NET pot fi clasificate in :
 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.

5.1. Asociere data


Cand folosim controale pentru surse de date, ASP.NET executa automat update si cereri
asupra sursei de date ca parte a ciclului de viata al paginii.
Modificarile (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.

6. Raspuns catre client


Se transmite clientului pagina cu informatiile cerute.

7. Cleanup
Eveniment Page.Dispose. Eliberare resurse.

Ioan Asiminoaei

29.03.2015 10/33

ASP.NET

Exemplificare ordine de tratare a evenimentelor unei pagini


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs"
Inherits="EventOrder.WebForm1" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="LabelInfo" runat="server" Text="Label"></asp:Label>
</div>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click"
Text="Send to server" />
&nbsp <br />
<asp:Button ID="Redirect" runat="server"
Text="Redirect - la WebFormClient.aspx" OnClick="Transfer_Click" />
&nbsp <br />
<asp:Button ID="Transfer" runat="server"
Text="Transfer - la WebFormClient.aspx" OnClick="Transfer_Click1"
/>
</form>
</body>
</html>

In etapa urmatoare adaugam metode pentru evenimentele urmatoare:


Page.Init, Page.Load, Page.PreRender, Page.Unload, si Button.Click.
namespace EventOrder
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Init(object sender, EventArgs e)
{
this.LabelInfo.Text = "Page_Init()" + "<br/>";
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.LabelInfo.Text += "Page_load(). Pagina nu e PostBack
(IsPostBack=false)." + "<br />";
}
else
{
this.LabelInfo.Text = "";
this.LabelInfo.Text += "Page_Load. Pagina e PostBack." + "<br/>";
}
Page.Validate("Iasi");
if (Page.IsValid)
{
this.LabelInfo.Text += "Pagina este valida! <br/>";
}

Ioan Asiminoaei

29.03.2015 11/33

ASP.NET
else
{

this.LabelInfo.Text += "Pagina nu e valida! <br/>";


}
}
protected void Page_PreRender(object source, EventArgs e)
{
this.LabelInfo.Text += "Page_PreRender." + "<br/>";
}
protected void Page_Unload(object sender, EventArgs e)
{
this.LabelInfo.Text += "Page_Unload. Nu apare acest mesaj pe
pagina clientului... " + "<br/>";
}
protected void Button1_Click(object sender, EventArgs e)
{
this.LabelInfo.Text += "Button pressed. Tratare eveniment... " + "<br/>";
}
protected void Transfer_Click(object sender, EventArgs e)
{
Response.Redirect("WebFormClient.aspx");
}
protected void Transfer_Click1(object sender, EventArgs e)
{
Server.Transfer("WebFormClient.aspx");
}
}
}

Rezultatul la prima cerere este:

Dupa clic pe butonul Send to server rezultatul este:

Se observa ca metoda Page_Init() nu se mai apeleaza.

Ioan Asiminoaei

ASP.NET

29.03.2015 12/33

Modelul Event in ASP.NET


Acest model descrie modul de tratare al evenimentelor diverselor controale continute in
<form>. Adaugam controale la formularul web si apoi decidem ce evenimente sa tratam.
Observatie
Modelul este asemanator cu cel dat de Windows Forms, dar lucreaza diferit. Numarul
evenimentelor implementate de controale este redus in comparatie cu Windows Forms.
1. Pagina ruleaza pentru prima data.
ASP.NET creaza pagina si controalele din pagina, executa codul de initializare si apoi
pagina este returnata clientului. Obiectul Page si controalele ce le contine sunt eliminate
din memorie (sunt distruse).
2. Clientul executa actiuni asupra paginii (completare controale din pagina, etc.) ce au
ca efect un postback. Pagina este trimisa cu toate datele din form catre server.
3. ASP.NET intercepteaza pagina returnata si recreaza obiectele din pagina la starea pe
care au avut-o ultima data.
4. ASP.NET verifica cine a generat postback si apeleaza metoda corespunzatoare acelui
eveniment (de ex. clic pe un buton). In acest moment se executa cod pe server (actualizare
baze de date, etc.) si apoi se modifica obiectele controalelor pentru a reflecta noua
informatie.
5. Pagina este transformata in HTML, trimisa clientului si apoi distrusa din server.
Daca pe aceeasi pagina apare un nou postback se reia ciclul de la pasul 2.

Postback automat proprietatea AutoPostBack


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 Windows.
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

29.03.2015 13/33

Care e mecanismul AutoPostback?


Cand AutoPostBack = true, ASP.NET foloseste un cod in JavaScript pentru a realiza
legatura dintre client si server.
Functia din JavaScript se numeste __doPostBack() ce foloseste doua campuri ascunse pentru
a transmite parametrii:
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value=""
/>

Codul in JavaScript (generat de ASP.NET) este urmatorul:


<script language="text/javascript">
<!-function __doPostBack(eventTarget, eventArgument) {
var theForm = document.form1;
theform.__EVENTTARGET.value = eventTarget;
theform.__EVENTARGUMENT.value = eventArgument;
theform.submit();
}
// -->
</script>

Controalele ce au AutoPostBack = true vor apela metoda __doPostBack() folosind


atributele onclick sau onchange din descrierea html a controlului.
Observatie
In descrierea din HTML, onclick si onchange apar ca atribute.
Pe partea de control (in codul C# scris pentru pagina) acestea sunt evenimente expuse de
control.
<asp:Button id="Button1" runat="server" Text="Button"
onclick="button1_Click">
</asp:Button>

View State. Proprietatea EnableViewState.


De fiecare data cand o pagina este trimisa catre server, acesta recreaza obiectele din pagina
pornind de la definitia acesteia, definitie 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 se numeste view state
pentru pagina. Informatiile sunt pastrate sub forma de perechi cheie/valoare.
Proprietatea in cauza este: EnableViewState = {true, false}.
Observatie
Chiar daca EnableViewState=false, sistemul continua sa mentina anumite informatii
despre pagina.

Ioan Asiminoaei

ASP.NET

29.03.2015 14/33

Conformitate cu XHTML
Controalele Web in ASP.NET sunt conforme cu standardul XHTML 1.1.
ASP.NET reda controalele folosind 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.
Urmatoarele controale ASP.NET pot folosi atributul target:






AdRotator
TreeNode
HyperLink
HyperLinkColumn
BulletedList

Definitia tipului de document


Fiecare tip de document XHTML incepe cu un doctype ce defineste tipul de XHTML ce va fi
folosit.
In pagina web ASP.NET, doctype trebuie plasat imediat dupa directiva Page, in portiunea de
marcare a paginii web.
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="TestPage.aspx.cs" Inherits="TestPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
...
</div>
</form>
</body>
</html>

Ioan Asiminoaei

ASP.NET

29.03.2015 15/33

Clasa Page
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 />");

Acest cod afiseaza numai controalele de pe primul nivel. Un control intr-o pagina poate fi
container pentru alte controale.
Urmatorul cod returneaza toate controalele continute intr-o pagina:
public void FindAllControls(List<Control> list, Control parent)
{
foreach (Control c in parent.Controls)
{
if (c is Control)
{
list.Add(c);
if (c.Controls.Count > 0)
{
this.FindAllControls(list, c);
}
}
}
}

Observatie
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

Controale server
Controalele server sunt clase in .NET Framework ce reprezinta elemente vizuale pe un
formular web.

Ioan Asiminoaei

29.03.2015 16/33

ASP.NET

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.

Ierarhia controalelor din server clasa Control


Toate controalele server sunt derivate din clasa Control aflata in System.Web.UI.

Proprietati importante ale clasei Control


ClientID

- returneaza identificatorul clientului, identificator creat de ASP.NET.

returneaza colectia de controale descendente. Colectia Page.Controls


contine controalele din pagina.

Controls

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.
FindControl() cauta control dupa nume.

Ioan Asiminoaei

ASP.NET

29.03.2015 17/33

Controale Web
Clasa de baza WebControl derivata din Control.
Proprietati importante
AccessKey
BackColor BorderColor BorderStyle - Dashed, Dotted, Double, Groove, Ridge, Inset, Outset, Solid, None.
BorderWidth
CssClass
Enabled

Clasele de baza ale controlelor web


ASP.NET

HTML si proprietati

<asp:Button>

<input type="submit"/> or
<input type="button"/>
Text, CausesValidation, PostBackUrl,
ValidationGroup.
Event Click.

<asp:CheckBox>

<input type="checkbox"/>
AutoPostBack, Checked, Text,
TextAlign.
Event CheckedChanged.

<asp:FileUpload>

<input type="file">
FileBytes, FileContent, FileName,
HasFile, PostedFile, SaveAs()

<asp:HiddenField>

<input type="hidden">
Value

<asp:HyperLink>

<a>...</a>
ImageUrl, NavigateUrl, Target, Text

<asp:Image>

<img/>
AlternateText, ImageAlign, ImageUrl

<asp:ImageButton>

<input type="image"/>
CausesValidation, ValidationGroup.
Event Click.

Ioan Asiminoaei

29.03.2015 18/33

ASP.NET
<asp:ImageMap>

<map>
HotSpotMode, HotSpots (collection),
AlternateText, ImageAlign, ImageUrl

<asp:Label>

<span>...</span>
Text, AssociatedControlID

<asp:LinkButton>

<a><img/></a>
Text, CausesValidation, ValidationGroup, Click event

<asp:Panel>

<div>...</div>
BackImageUrl, DefaultButton,
GroupingText, HorizontalAlign,
Scrollbars, Wrap

<asp:RadioButton>

<input type="radio"/>
AutoPostBack, Checked, GroupName,
Text, TextAlign, CheckedChanged event

<asp:Table>

<table>...</table>
BackImageUrl, CellPadding,
CellSpacing, GridLines,
HorizontalAlign, Rows (collection)

<asp:TableCell>

<td>...</td>
ColumnSpan, HorizontalAlign,
RowSpan, Text, VerticalAlign, Wrap

<asp:TableRow>

<tr>...</tr>
Cells (collection), HorizontalAlign,
VerticalAlign

<asp:TextBox>

<input type="text"/> sau

<textarea>...</textarea>
AutoPostBack, Columns, MaxLength,
ReadOnly, Rows, Text, TextMode, Wrap.
Event TextChanged.

Ioan Asiminoaei

ASP.NET

29.03.2015 19/33

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

Unitati de masura
 px pixeli
 % - procent din pagina afisata
Exemplu declarare in pagina:
<asp:Panel Height="300px" Width="50%" id="pnl" runat="server" />

iar din cod:


// Convert the number 300 to a Unit object
// representing pixels, and assign it.
pnl.Height = Unit.Pixel(300);
// Convert the number 50 to a Unit object
// representing percent, and assign it.
pnl.Width = Unit.Percentage(50);

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.

//C#
ctrl.ForeColor = Color.Red;
//ASP.NET
<asp:TextBox ForeColor="Red" Text="Test" id="txt" runat="server" />
<asp:TextBox ForeColor="#ff50f" Text="Test" id="txt" runat="server" />

Ioan Asiminoaei

ASP.NET

29.03.2015 20/33

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

29.03.2015 21/33

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, LinkButton 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

29.03.2015 22/33

Evenimentul click si ImageButton


Evenimentul click 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> contine o colectie de obiecte <asp:ListItem>.

In HTML, tag <select> cu atributul size="1".


<asp:ListBox> contine o colectie de obiecte <asp:ListItem>.

In HTML, tag <select> cu atributul size="x" unde x este numarul de articole


vizibile.
<asp:CheckBoxList> - contine o colectie de obiecte <asp:ListItem>.
<asp:RadioButtonList> - contine o colectie de obiecte <asp:ListItem>.
<asp:BulletedList> o lista statica ordonata sau nu.

In HTML, tag <ul> sau <ol>.


Se poate folosi si pentru a crea o lista de hyperlink-uri.

Ioan Asiminoaei

ASP.NET

29.03.2015 23/33

Membri
AutoPostBack = true => actioneaza la schimbarea selectiei curente.
Items returneaza o colectie de articole ListItem.
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 primul articol ListItem selectat.
DataSource - se seteaza la un obiect ce contine informatii pe care 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.

Controalele de tip List selectabile sunt:







DropDownList
ListBox
CheckBoxList
RadioButtonList.

Exemplu. Fiecare control de tip lista are setata pe true proprietatea AutoPostBack.
<form id="form1" runat="server">
<!-- DropDownList -->
<div>
<asp:Label BackColor="Yellow" Text="Control DropDownList " runat="server"/>
&nbsp &nbsp
<asp:DropDownList ID="DropDownList1" runat="server" Height="16px"
Width="189px" AutoPostBack="true"
OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
<asp:ListItem Text="DDL Item 1" Value="1" />
<asp:ListItem Text="DDL Item 2" Value="2" />
</asp:DropDownList>
<asp:Label Text=" Valoare selectata din DropDownList " runat="server" />
&nbsp &nbsp
<asp:Label ID="DDLResult" runat="server" />
</div>
<br /> <br />
<!-- ListBox -->

Ioan Asiminoaei

ASP.NET

29.03.2015 24/33

<div>
<asp:Label BackColor="Yellow" Text="Control ListBox" runat="server" />
<asp:ListBox ID="ListBox1" runat="server" AutoPostBack="true"
OnSelectedIndexChanged="ListBox1_SelectedIndexChanged" Width="201px">
<asp:ListItem Text="ListBox Item 1" Value="1" />
<asp:ListItem Text="ListBox Item 2" Value="2" />
</asp:ListBox>
<asp:Label Text=" Valoare selectata din ListBox " runat="server" />
&nbsp &nbsp
<asp:Label ID="LBResult" runat="server" />
</div>
<br /> <br />
<!-- CheckBoxList -->
<div>
<asp:Label BackColor="Yellow" Text="Control CheckBoxList" runat="server" />
<asp:CheckBoxList ID="cbl" runat="server" AutoPostBack="true"
Width="201px" OnSelectedIndexChanged="cbl_SelectedIndexChanged">
<asp:ListItem Text="CBL Item 1" Value="1" />
<asp:ListItem Text="CBL Item 2" Value="2" />
</asp:CheckBoxList>
<asp:Label Text=" Valoare selectata din CheckBoxList " runat="server" />
&nbsp &nbsp
<asp:Label ID="CBLResult" runat="server" />
</div>
</form>

iar codul pe evenimente este :


protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
this.DDLResult.Text = this.DropDownList1.SelectedValue;
}
protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
this.LBResult.Text = this.ListBox1.SelectedValue;
}
protected void cbl_SelectedIndexChanged(object sender, EventArgs e)
{
// iterez colectia si determin ce a fost selectat
string temp="";
for (int i=0; i<cbl.Items.Count; i++)
{
if (cbl.Items[i].Selected)
temp += "; " + cbl.Items[i].Value;
}
this.CBLResult.Text = temp;
}

Ioan Asiminoaei

29.03.2015 25/33

ASP.NET

Alte proprietati importante pentru CheckBoxList si RadioButtonList


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

Ioan Asiminoaei

29.03.2015 26/33

ASP.NET

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

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).
BulletImageUrl FirstBulletNumber seteaza prima valoare din lista (cu care se incepe marcarea

elementelor).
DisplayMode : {Text, LinkButton eveniment clic, HyperLink textul este un URL}.
Exemplu. Codul pentru tratarea evenimentului clic e scris in pagina.
<%@ Page Language="C#" %>
<!DOCTYPE html>
<script runat="server">
protected void BulletedList1_Click(object sender,
BulletedListEventArgs e)
{
if (e.Index ==0)
{
Image1.ImageUrl = "~/images/audi.png";
}
if (e.Index ==1)
{
Image1.ImageUrl = "~/images/bmw.png";
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>

Ioan Asiminoaei

ASP.NET

29.03.2015 27/33

<br />
Click the name to see the user&#39;s photo
<asp:BulletedList ID="BulletedList1" runat="server"
DataSourceID="SqlDataSource1"
DataTextField="username"
DataValueField="Id"
DisplayMode="LinkButton"
OnClick="BulletedList1_Click">
</asp:BulletedList>
<!Sursa de date -->
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT * FROM [usertable]">
</asp:SqlDataSource>
</div>
<asp:Image ID="Img1" runat="server" Height="110px" Width="110px"
/>
<br />
</form>
</body>
</html>

Controale pentru validarea intrarilor


Validarea se realizeaza atat pe partea de client cat si pe partea de server.
Controalele de validare se declara in <form> si sunt atasate controalelor de intrare. In acest
mod nu mai e necesar sa scriem cod pentru validare atat pe partea de client cat si pe cea de
server.
Daca procesul de validare nu este trecut cu succes, pagina nu este trimisa serverului sau nu
este retransmisa clientului, adica pagina este invalida si proprietatea Page.IsValid are
valoarea false.
<asp:RequiredFieldValidator> - controlul nu trebuie sa fie vid cand pagina este trimisa
serverului.
<asp:RangeValidator> - controleaza daca valorile asociate controlului sunt in intervalul
specificat.
<asp:CompareValidator> - controleaza daca valoarea asociata controlului se potriveste cu
comparatia specificata mai mare, mai mic, etc - valoare din alt control sau o constanta.
<asp:RegularExpressionValidator> - controleaza daca valoarea specificata se potriveste cu
expresia regulata specificata.
<asp:CustomValidator> - validator personalizat. Cod JavaScript pe partea de client, cod C#
pe partea de server.
<asp:ValidationSummary> - arata o sinteza a erorilor pentru fiecare camp.
Observatie: Se pot folosi mai multi validatori pentru acelasi camp.
Ioan Asiminoaei

ASP.NET

29.03.2015 28/33

Proprietatea RequiredFieldvalidator.
RangeValidator, CompareValidator si RegularExpressionValidator nu verifica
daca controlul este vid si vor returna succes in acest caz.
RequiredFieldValidator rezolva problema.
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 (eroare).

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.
Ioan Asiminoaei

ASP.NET

29.03.2015 29/33

Observatie
Putem verifica proprietatea Page.IsValid pentru a sti daca toate controalele de intrare din
pagina sunt valide.
SetFocusOnError - focus mutat pe campul ce contine eroarea. Regula: 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="NameTextBox" />
<asp:RequiredFieldValidator runat="server"
ControlToValidate="NameTextBox" ErrorMessage="Name is required"
Display="dynamic">*
</asp:RequiredFieldValidator>

Se va afisa * daca TextBox-ul este vid.

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"

Ioan Asiminoaei

ASP.NET

29.03.2015 30/33

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

Memento
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,
carriagereturn, 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

Ioan Asiminoaei

ASP.NET

29.03.2015 31/33

{N,M} Between N and M matches (inclusive)

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>

Pe partea de server, eveniment CustomValidator.ServerValidate:


protected void EmpIDServerValidate(object sender,
ServerValidateEventArgs args)
{
try
{
args.IsValid = (int.Parse(args.Value)%5 == 0);
}
catch
{
// An error is most likely caused by non-numeric data.
args.IsValid = false;
}
}
Pagina .aspx
<asp:TextBox runat="server" ID="EmpID" />
<asp:CustomValidator runat="server" ControlToValidate="EmpID"
ClientValidationFunction="EmpIDClientValidate"
ErrorMessage="ID must be a multiple of 5" Display="dynamic">*
</asp:CustomValidator>

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

29.03.2015 32/33

ASP.NET

Folosirea validarilor in cod


Pentru a accesa validatorii in cod, trebuie iterata colectia Validators a paginii curente.
protected void Options_Changed(object sender, System.EventArgs e)
{
// Examine all the validators on the back.
foreach (BaseValidator validator in Page.Validators)
{
// Turn the validators on or off, depending on the value
// of the "Validators enabled" check box (chkEnableValidators).
validator.Enabled = chkEnableValidators.Checked;
// Turn client-side validation on or off, depending on the
// value of the "Client-side validation enabled" check box
// (chkEnableClientSide).
validator.EnableClientScript = chkEnableClientSide.Checked;
}
// Configure the validation summary based on the final
// two check boxes.
Summary.ShowMessageBox = chkShowMsgBox.Checked;
Summary.ShowSummary = chkShowSummary.Checked;
}

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

29.03.2015 33/33

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

S-ar putea să vă placă și