Documente Academic
Documente Profesional
Documente Cultură
1 Aspnet
1 Aspnet
NET
Concepte de baz
Dinamicitatea paginilor web
paginile statice se mai numesc i pagini HTML, cci nu conin alt tip de cod dect cel scris n
HTML; coninutul unei pagini nu variaz n timp sau de la un utilizator la altul; toi vd la
fel, fr informaii specifice contextului rulrii; coninutul este fixat i cunoscut nainte de
lansarea cererii ctre pagina respectiv.
- securitate redus, cci codul este vizibil din browser, cu View / Source.
Pentru a reflecta chestiuni legate de un context ( de exemplu afiarea orei exacte, sau pentru
adaptarea coninutului paginii la profilul utilizatorului care solicit pagina html ) pagina ar trebui
compus abia dup ce s-a naintat cererea din partea unui client.
paginile dinamice sunt cele configurate abia la momentul execuiei, n funcie de context i de
resursele disponibile pe calculatorul de pe care se lanseaz cererea; de obicei aceste pagini au i
un nivel nalt de interactivitate. Pentru a realiza dinamicitatea, trebuie scris cod surs care se
ruleaz la momentul lansrii unei cereri i care prin rulare stabilete coninutul ce va fi afiat
n pagin; trebuie avut ns n vedere n ce limbaj este scris acest cod, cine nelege i poate
prelucra acest cod.
15.10.2015
Dezavantaje:
depanare dificil;
se execut n proces separat, consumnd multe resurse.
Tehnologia ASP.NET
Modelul disponibilizat sub .NET de ctre Microsoft pentru aplicaiile accesibile din Internet este
denumit pe scurt ASP.NET (Active Server Page) i are urmtoarele caracteristici principale:
- se bazeaz pe formulare Web ( Web Forms) i separ logica prezentrii de logica de
business;
- furnizeaz controale de server ce recunosc evenimente la nivel de server, dar sunt n final
convertite n controale HTML, pentru a fi recunoscute i tratate n orice browser;
- asigur accesul la date prin mecanismul ADO.NET;
- permite caching pentru date i pentru salvarea strii unui client, pe server, pe calculatorul
client sau pe servere SQL specializate.
Avantaje ASP
-
este o tehnologie orientat obiect pentru dezvoltare rapid de aplicaii; elementele HTTP sunt
tratate tot obiectual;
lucreaz cu pagini compilate, nu interpretate pas cu pas; recompilarea se face doar cnd
este nevoie;
permite accesul la toate clasele din .NET, clase care pot ndeplini sarcini complexe;
asigur securitatea prin mecanisme forms-based i Passport authentication;
trateaz fiiere XML, inclusiv pentru reconfigurri, fr a necesita restartarea server-ului;
ofer extensibilitate prin crearea i integrarea de noi componente sau nlocuirea unora
existente cu versiuni noi.
Instalarea componentelor web-server i stabilirea legturii cu ASP.NET
ne introduce n fereastra IIS coninnd lista site-urilor din evidena serverului Web ( Default
Web Site, plus altele ). Trebuie ca IIS s fie ns instalat.
15.10.2015
Dac nu e startat IIS l putem starta / restarta de aici: selectat Default Web Site / Stop / Start /
Restart IIS; nu necesit restartarea calculatorului.
O
alt
modalitate
de
a
ajunge
n
fereastra
de
startare
IIS:
C:\Windows\System32\inetsrv\InetMgr.exe; se pot stabili drepturi i interdicii pe diverse
servicii ale IIS.
Adugare director virtual:
Default Web Site / buton dreapta mouse / New Virtual Directory; aplicaiile create cu
Visual Studio beneficiaz de propriul director virtual, creat odat cu aplicaia; cele create cu
Visual Studio pot rula i n afara IIS, sub un server web de dezvoltare (integrat); ele vor fi
aduse la finalizare (deployment) ntr-un director virtual, fiind nregistrate n metabaza IIS,
pentru ca site-ul s fie vizibil i din afara aplicaiei.
Control Panel / Administrative Tools / Computer Management / Services & Apps / IIS / Web Sites /
Default Web Site cu click mouse dreapta / Properties se poate schimba portul prin care se comunic
cu serverul: TCP Port = 80 sau 81.
Dac pe calculator se dispune de mai multe plci de reea pot exista mai multe Local Area
Connection (Start / Control Panel / Network and DialUp Connection); ele pot avea setri
diferite. Se pot pune mai multe adrese IP chiar pe aceeai conexiune. O adres IP poate
avea i pseudonim:
- n registru DNS, pe serverul de reea;
- local, n c:\winnt\system32\drivers\etc\hosts ca text:
38.25.63.10 www.ceva.ro
Dificultatea realizrii unor pagini web coninnd date stocate n BD pe internet const n faptul
c trebuie corelate trei componente:
Server Web - IIS Microsoft, pentru stocarea i regsirea paginilor;
Visual Studio .NET ASP.NET, ca mediu de programare pentru crearea paginilor;
Server de BD - SQL Server, pentru gestiunea datelor.
Creare site Web
n fereastra IIS cu buton dreapta mouse pe calculatorul dorit, se alege New / Web site i se indic
adresa de IP nregistrat mai sus, plus drepturile de acces.
Cele dou opiuni se controleaz din consola IIS ( tab-urile Default documents i Directory
browsing); trebuie creat ns una din paginile: default.htm, default.asp, default.aspx, index.htm
etc.
Mixarea informaiilor ntr-o pagin web
O pagin Web poate conine:
cod html, recunoscut de orice browser;
cod ntr-un limbaj de programare recunoscut de ctre serverul care ine pagina Web;
cod script ntr-un limbaj de tip script, recunoscut de majoritatea browserelor ( JavaScript,
VB Script fiind cele mai rspndite limbaje de tip script).
15.10.2015
Modul n care se mixeaz aceste trei tipuri de cod complic oarecum nelegerea lucrurilor, dar este
foarte important pentru c el d ordinea n care se afieaz diferitele informaii n pagin. Din
punctul nostru de vedere, reinem dou dintre tag-urile care introduc cod scris ntr-un alt limbaj
dect html:
seciunea de precizare a codului
<scriptlanguage="C#"runat="server">codC#</script>
De obicei punem codul propriu-zis n prima parte a paginii, iar apelul codului (partea de
prezentare ) n interior, acolo unde dorim s apar efectul rulrii, n pagin.
Uzual, se practic i gruparea ntregului cod n fiier separat, tehnic denumit "code
behind"; la nceputul paginii se indic numele fiierului coninnd codul, iar n interiorul paginii se
trece apelul codului, ce va genera ca rezultat prezentarea paginii.
<%@ Page Language="c#" Src="fis.cs"%>
<% // apel cod C# %>
c:\inetpub\wwwroot
<html>
<script runat="server" language="c#"> </script>
<% Response.Output.Write( System.DateTime.Now.ToString()); %>
</html>
15.10.2015
<html>
<script language="javaScript">
document.write( " <b> Dinamicitate client side:
</b>" );
azi = new Date();
document.write( azi.getDate(),"/ ",azi.getMonth()+1,
"/ ", azi.getYear(), " ",azi.getHours(),":",
azi.getMinutes(),":", azi.getSeconds() );
</script>
</html>
Aceast pagin realizeaz aproximativ acelai lucru ca n exemplul anterior, dar responsabil
cu aceast sarcin este de data aceasta browser-ul cu care un client navigheaz pe aceast pagin;
aadar browser-ul clientului este cel care interpreteaz script-ul Java i l execut, apoi afieaz
rezultatul. Ora afiat va fi cea de pe calculatorul clientului, nu cea din server; presupunnd c
paginile sunt vizualizate de pe aceeai main i ambele ceasuri arat bine ora exact, cele dou
exemple de mai sus vor afia ore diferite, dac server-ul se afl pe un alt fus orar dect calculatorul
client!
Exemplu functia.aspx
n acest exemplu vom avea ambele categorii de cod: n prima parte se prezint codul unei
funcii, iar n interiorul paginii se pune codul de vizualizare, care apeleaz aceast funcie i afieaz
ptratele rezultate prin rularea funciei.
<script runat="server">
double Patrate(double nr) { return (nr)*(nr); } </script>
<html>
<h2> Patratele primelor 10 numere naturale </h2>
<table border="2">
<tr>
<th> Numarul </th><th> Patratul </th>
</tr>
<%
for (double i = 1.0; i<=10.0; i++)
{
Response.Output.Write( "<tr><td>{0}</td><td>" +
"{1:f}</td><tr>", i, Patrate(i));
}
%>
</table>
</html>
Pagina se apeleaz n browser sub forma http://localhost/functia.aspx
Reiese c funcia ( n general, codul din blocul script ) nu este activat dect n momentul cnd
este solicitat de un eveniment sau de ctre un alt cod executabil, pus n partea de redare <%
%>. n exemplul nostru, apelul Patrate(i) invoc partea de cod din blocul script.
Reamintim c la client ajunge pagina deja prelucrat, astfel nct dac n browser cerem din
meniu View / Source, vedem ptratele deja calculate, browser-ul doar afindu-le.
Nepreciznd runat="server" se presupune c se execut implicit n browser.
ntr-o pagin se poate pune cod scris doar ntr-un singur limbaj, n cazul nostru C#.
Sensul codului de redare de mai sus este urmtorul: obiectul pagin are proprietatea
Response care este o referin la un obiect HTML de tip Response, ce conine rspunsul dat de
server la solicitarea unei pagini de ctre un client. Obiectul Response recunoate metodele
Response.Write() i Response.Output.Write() cu care putem aduga linii n rspunsul returnat
clientului; Response.Output.Write() permite chiar i scrierea de text formatat, pe care un
browser tie s-l interpreteze.
15.10.2015
O alt variant ar fi s punem funcia ntr-un fier separat, pe care s-l citm n clauza
lsnd n pagin doar partea de apel i de redare pagin. n ambele variante codul
surs se compileaz la momentul cererii paginii; vom vedea n continuare c o alternativ mai
eficient este s precompilm codul, mrind astfel viteza de rspuns la o cerere.
Src="fis.cs",
ASP.NET ofer alternativa obiectual pentru crearea i accesul la paginile Web. Documentul
html este mpachetat ntr-un obiect de clas WebForm1 sau _Default, derivat din clasa Page.
Ceea ce este cuprins ntre <script runat="server" language="c#"> i </script> se include
n aceast clas, iar ceea ce se specific ntre <% i %> poate fi imaginat ca o parte dintr-o
funcie Render() a clasei derivat din clasa Page.
Reiese c ntre <script> i </script> putem include funcii, pe cnd ntre <% i %> nu
dm dect elemente specifice redrii paginii Web, neputnd defini alte funcii deoarece ne aflm deja
n interiorul unei funcii ( adic n funcia Render() ).
Un exemplu n care codul mixat ntr-o pagin web nu este apelat explicit din zona de redare,
ci implicit, pe baz de eveniment semnalat la nivel de pagin ( evenimentul Page_Load ) ar fi
urmtorul:
Exemplu bdPage.aspx
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.OleDb" %>
<script language="c#" runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
string strSql = "SELECT codp, denum, pret FROM produse";
OleDbConnection con =
new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data" +
" Source=C:\prod.mdb");
try {con.Open(); }
catch(Exception ex) {mesaje.Text ="Eroare open conexiune"+ex.Message;}
OleDbCommand myCmd
= new OleDbCommand(strSql,con);
OleDbDataReader dr = myCmd.ExecuteReader();
while (dr.Read())
{
mesaje.Text+="\r\n"+dr["codp"]+ " " + dr["denum"]+ " " + dr["pret"];
mesaje.Text+="\r\n";
}
dr.Close(); con.Close();
}
</script>
<html>
<body>
<form id="Form1" method="post" runat="server">
<h4> Interogare BD folosind un obiect DataReader
</h4>
<asp:TextBox id="mesaje" runat="server" TextMode="MultiLine">
</asp:TextBox>
<h4> End Interogare BD </h4>
</form>
</body>
</html>
Se ruleaz dnd n linia de adres a browser-ului http://localhost/bdPage.aspx; trebuie
doar s ne asigurm c exist fiierul C:\prod.mdb coninnd o baz de date Access, cu tabela
produse i cmpurile: codp, denum i pret.
15.10.2015
Pregtirea paginii se face tot pe server; o problem care apare aici este cum va cltori
informaia extras de pe server ( spre exemplu, dintr-o baz de date) pn la client, pentru vizualizare
n browser. Putem defini o variabil la nivelul paginii, string strRezultat; ea este recunoscut i
de funcia Render(), dar i pierde coninutul ntre dou cereri succesive. Putem apela la un control
de tip TextBox, care va transporta informaia n proprietatea sa numit Text, folosit drept
container; acesta este mecanismul pentru care s-a optat n exemplul de mai sus, rolul de container
avndu-l TextBox-ul mesaje.
La ncrcarea paginii n server, se lanseaz evenimentul Page_Load, care apeleaz implicit
funcia de tratare cu acelai nume, moment n care se acceseaz baza de date i se adaug informaia,
linie cu linie, n textBox;
n rest, dup cum se poate observa, lucru cu obiecte .NET este cel uzual, chiar cnd e vorba
de obiecte pentru acces la baze de date.
Web Forms controls desemneaz server controls
Local IIS dac dorim ca site-ul s se afle ntr-un director virtual recunoscut de server-ul de
web local (IIS). Cu icon-ul din colul dreapta-sus Create New Web Application se poate crea
chiar acum un nou director virtual.
FTP Site - cnd lucrm pe un site la distan ( sub alt IIS, dect cel local ) i-l accesm prin
FTP, furniznd informaiile de conectare (FTP site, port, director, user, password).
Remote Web Server - cnd lucrm pe un site la distan i-l accesm prin protocolul HTTP,
furniznd URL (uniform resource locator); n acest caz este nevoie s avem instalate extensiile
FrontPage; la conectare vom furniza user i password.
Spre deosebire de Windows Forms, aplicaiile Web au fereastra de vizualizare grafic (Designer)
cu mai multe formate de vizualizare, accesibile prin comutatorii din josul paginii:
- Design View vizualizarea grafic a controalelor din pagin, care permite lucru n regim
grafic; controlele din ToolBox vor fi selectate din tab-ul Web Forms, nu din Windows Forms.
15.10.2015
Rularea paginii de sub Visual Studio declanseaz activarea unui ASP Development Server,
folosind cte un port specific pentru comunicare; lansarea paginii din afara mediului Visual Studio se
poate face direct din Internet Explorer sau alt browser, indicnd adresa paginii ( ex.
http://localhost:1966/WebSite3/myPage.aspx) pe care o folosea i mediul cnd rulam sub
mediul integrat (extras din bara de adres) i va funciona dac serverul de dezvoltare este nc activ
la acel moment.
Specificarea altor detalii de trasare pagin se poate face folosind foi de stiluri.
Consultnd directorul n care a fost creat aplicaia ( C:\Inetpub\wwwroot\prima) observm mai
multe fiiere:
ASP.NET ncepnd cu versiunea 2.0 folosete pentru dezvoltarea aplicaiei un server web
integrat; acesta lucreaz pe un port distinct de portul pe care lucreaz IIS, prevenind astfel
eventualele conflicte ce pot apare. Server-ul web ncorporat ruleaz o pagin web n numele
utilizatorului logat n Windows, deci cu eventuale privilegii extinse, fa de IIS care ruleaz cu
privilegii stricte, din considerente de securitate sporit.
n scopul prevenirii conflictelor de apartene a unei clase la mai multe namespace-uri, va
trebui dat calificarea complet a clasei; cum aceast ar putea fi prea lung, se poate folosi using
pentru a introduce un alias mai scurt:
using scurt = NumeDeSpatiuLung;
scurt.Cls ex;
15.10.2015
Ierarhiile din namespace-uri nu reflect neaprat derivri; la derivare clasele pot aparine unor
namespace-uri diferite.
Namespace-ul nu se confund cu library; o bibliotec dll are un corespondent fizic ( fiier dll ce
conine codul executabil aferent unor clase i funcii ), pe cnd namespace-urile sunt mai degrab
grupri logice ale unor clase i funcii.
15.10.2015
6. Eliberarea resurselor se face dup ce au avut loc toate transformrile paginii n server i
pagina este redat ca HTML i pornete spre client. n acest moment se declaneaz
evenimentul Page.Unload i nicio modificare asupra paginii nu mai este posibil. Garbage
collector-ul elibereaz toate instanele de obiecte ce nu mai sunt referite i se declaneaz
evenimentul Page.Disposed, care ncheie ciclul de via al paginii n server.
Pentru aezarea mai flexibil n pagin se poate folosi un control de tip Table, care permite
plasarea diverselor controale n celule, cu posibilitatea de merge, resize, insert etc. Se recomand
controlul Table simplu, din seciunea HTML, nu cel din seciunea Standard, care ar necesita resurse
ASP.NET, la runtime.
Punctul de vedere n baza cruia s-au denumit evenimentele este cel al server-ului:
desemneaz ncrcare pagina pe server, pentru prelucrri; Page.PreRender pe server,
nainte de a o face HTML, Page.Unload plecare din server ctre client i eliberare resurse pe server.
Page.Load
Similar
stau
lucrurile
i pentru
Request
i Response; spre exemplu,
precizeaz c n rspuns, serverul cere browser-ului s fac o
cerere ctre o alt pagin newpage.aspx. Spre deosebire de aceasta, Server.Transfer("newpage.aspx");
nu presupune un du-te - vino de pagin, ci serverul n loc s prelucreze pagina cerut de browser,
prelucreaz o alta, dar de pe acelai server; n browser adresa paginii nu se schimb.
Response.Redirect("newpage.aspx");
Web server ul folosit este aici Internet Information Services [ IIS ] = inetinfo.exe
Internet Server Application Programming Interface (ISAPI) conine funcii DLL ce se ncarc
dinamic, n acelai proces cu serverul.
Avantaj: sunt rapide, partajabile. Pot fi mprite n dou categorii:
filtre ncrcate la iniializare server i folosite la tratarea evenimentelor la nivel de server;
extensii - ncrcate la prima solicitare i apoi partajate ntre aplicaii.
Dezavantaj: la euare, afecteaz tot serverul, fcnd parte din acelai proces.
1. IIS primete cererea i dup extensia de fiier vede ce DLL din ISAPI deservete cererea.
Dac extensia este .aspx, adic ASP.NET, atunci invoc funcia adecvat din
aspnet_isapi.dll pentru tratarea cererii ( n consola IIS, tab-urile MIME, respectiv
Handler Mapings pentru a vedea asocierile dintre extensiile de fiiere i executabilele ce
le deservesc; *.aspx e asociat cu PageHandlerFactory ).
2. Procesul
aspnet_isapi.dll transmite cererea ASP.NET ctre worker process
(aspnet_wp.exe), care o trateaz;
3. worker process compileaz fiierul .aspx obinnd un assembly, creaz un application
domain i instruiete maina virtuala CLR (Common Language Runtime) s execute
assembly-ul n contextul application domain creat
4. assembly folosete clase din FCL (Framework Class Library) pentru a rezolva cererea i
genereaz un rspuns;
5. worker process preia rspunsul generat, l mpacheteaz i-l transmite procesului din
aspnet_isapi.dll, care l transmite la rndul lui serverului IIS pentru a fi naintat clientului, la
distan.
Uzual, structura unei pagini include trei seciuni distincte:
10
15.10.2015
Sintaxa directivelor este unic pentru toate directivele, iar n cazul atributelor multiple acestea
sunt separate cu un spaiu; nu trebuie separat cu spaiu semnul egal (=), de asignare a valorilor
unui atribut:
<%@ Directive_Name attribute="value" [attribute="value"...] %>
n cadrul unui formular web, adic ntre tag-urile <form id="Form1" method="post" >
</form> putem pune cod C#, declarat ca script:
Eventualele erori de compilare sunt raportate doar cnd se ruleaz pe aceeai main (
localhost ), dar se poate cere raportarea erorilor i cnd se ruleaz pe un server aflat la distan; n
acest scop n fiierul de configurare web.config, se pune n rubrica adecvat codul urmtor:
<compilation
defaultLanguage=c#
debug=true
/>
11
15.10.2015
DropDownList
Se aduce prin dragare din ToolBox un control DropDownList i se populeaz adugnd cteva
linii n colecia (proprietatea) Items;
i se fixeaz proprietatea AutoPostBack pe true, pentru a anuna serverul de orice schimbare de
selectie;
se trateaz evenimentul SelectedIndexChanged prin funcia:
private void cbModel_SelectedIndexChanged(object sender, System.EventArgs e)
{
tbTip.Text = cbModel.SelectedValue;
}
AddRotator
12
15.10.2015
Fiierul reclama.xml se adaug la proiect cu meniu Project (WebSite) / Add Existing Item...
<?xml version="1.0" encoding="utf-8" ?>
<Advertisements>
<Ad>
<ImageUrl>p29.jpg</ImageUrl>
<NavigateUrl>http://localhost/WebApplication10/</NavigateUrl>
<AlternateText>Doctorat</AlternateText>
<Impressions>40</Impressions>
<Keyword>Curs</Keyword>
<Specialization>Acces INTERNET </Specialization>
</Ad>
<Ad>
<ImageUrl>p30.jpg</ImageUrl>
<NavigateUrl>http://localhost/WebApplication10/ </NavigateUrl>
<AlternateText> Biblioteca Academiei </AlternateText>
<Impressions>30</Impressions>
<Keyword>Books</Keyword>
<Specialization>Books for Professionals
</Specialization>
</Ad>
<Ad>
<ImageUrl>p31.jpg</ImageUrl>
<NavigateUrl>http://localhost/WebApplication10/</NavigateUrl>
<AlternateText> Libraria ASE </AlternateText>
<Impressions>30</Impressions>
<Keyword>Books</Keyword>
<Specialization>Academic Books</Specialization>
</Ad>
</Advertisements>
Se adaug un control AddRotator care este capabil s afieze aleator, la fiecare schimbare de
pagin, cte o imagine cu text asociat ;
i se pune proprietatea AdvertisementFile pe valoarea reclama.xml;
ne preocupm s existe fiierele imagine citate n reclama.xml.
Calendar
Funcia preia datele selectate din calendar i le pune ntr-un control Label lblMesaj.
13
15.10.2015
Clasa Page
Ierarhia derivrii:
System.Object
System.Web.UI.Control
System.Web.UI.TemplateControl
System.Web.UI.Page
deci clasa Page este i un control avnd o mulime de proprieti i evenimente pe care le recunoate.
Este i container de controlale, colecia Controls furniznd acces la controalele de pe pagin.
Aa cum aminteam, etapele crerii paginii sunt semnalate prin evenimente ce pot fi interceptate
i folosite pentru a plasa cod de utilizator pentru executat legat de acel moment:
- Init generat la crearea unei instane de tip Page; se poate folosi i pentru a ataa dinamic
handlere altor evenimente recunoscute de pagin i declanate ulterior.
-
14
15.10.2015
i arat c acest tip de delegat poate ine referina oricrei funcii ce primete un obiect generic i un
bloc de parametri cu argumentele specifice unui eveniment generic i returneaz void.
Cnd adugm unui eveniment o funcie de tratare, se instaniaz un nou delegat, care prin
constructor primete i referina pe care o va transporta:
this.Load += new EventHandler(tratareLoad);
Atenie cnd textul surs se preia cu Copy / Paste, ghilimelele trebuie s fie cele drepte, nu "smart" !
se
recomand
folosirea
simultan
a
mecanismelor
delegate
i
AutoEventWireup="true" deoarece unele din funciile de tratare pot fi apelate de dou ori;
explicaia const n faptul c n cadrul mecanismului AutoEventWireup ASP.NET leag automat la
delegaii corespunztori, metodele cu numele impus, iar cnd programatorul ataeaz metodele cu +=
le leag a doua oar!
15
15.10.2015
Exemplul de mai sus se putea da i ca fiier text, ataabil la un proiect vid, nemaifiind
necesar trimiterea la fiierul cu cod surs Codebehind="WebForm1.aspx.cs", care oricum nu
aducea n plus ceva major.
Mecanismul code-behind separ codul necesar descrierii interfeei utilizator (user interface)
de codul ce detaliaz algoritmii de prelucrare (business logic). Prima categorie se pune n fiierul de
tip .aspx, cea de-a doua n fiierul .cs; astfel este posibil i lucru n echip, designerii ocupndu.se de
proiectarea vizual a paginii, iar programatorii de prelucrri.
Cele dou fiiere sunt legate prin atributul Codebehind din directiva Page; acesta precizeaz fiierul
cu cod surs . Linkeditarea apare astfel ca fiind iniiat din pagina de utilizator.
Directiva Page precizeaz atribute necesare compilrii i vizualizrii paginii Web.
Src - citeaz numele fiierului surs ce conine clasa code-behind care este compilat dinamic la
solicitarea unei pagini Web. Cnd folosimVisual Studio .NET nu este nevoie de acest atribut doarece
clasa code-behind este precompilat.
Inherits furnizeaz numele clasei code-behind ce conine codul paginii ASPX i din care clasa
generat dinamic va moteni prin derivare.
Desi Src furnizeaz aceeai informaie ca atributul Codebehind; ntre ele exist o deosebire
major: Src e necesar cnd compilarea se face la momentul vizualizrii paginii. Visual Studio a
optat pentru precompilarea codului ce nsoete pagina Web. Pentru c mediul Visual Studio separ
i el codul de vizualizare de cel de prelucrare, are totui nevoie la momentul proiectrii aplicaiei de
numele fiierului ce ine codul surs C#, pentru a-l compila din vreme; acesta e indicat prin
Codebehind. Aadar, Codebehind este un atribut neles i folosit numai de VS (nu i de
ASP.NET la execuia paginii) pentru localizarea fiierului surs ce conine definirea claselor folosite
n pagin.
Asocierea Src i Inherits sugereaz o pagin fr compilare prealabil.
Asocierea Codebehind i Inherits sugereaz o pagin cu precompilare
Precompilarea are urmtoarele avantaje:
- ne asigur c am rezovat toate erorile de compilare;
- nu mai trebuie dat beneficiarului codul surs, ci doar dll-urile;
- chiar cnd pe calculatorul beneficarului exist alt versiune de .NET, clasa folosete
versiunea cu care a fost ea creat.
Meniu Project / Show All Files permite vizualizarea n Solution Explorer a tuturor fiierelor
folosite n cadrul unui proiect, altfel implicit sunt vizibile doar o parte dintre ele.
Fiierul de configurare Web.config conine toate clauzele de configurare a proiectului, inclusiv
debug = true, necesar cnd aplicaia nu poate fi rulat n mod depanare, cci ea a fost compilat
fr opiuni de depanare. Punnd-o pe true, ne asigurm c recompilarea se face cu adugarea tuturor
facilitilor de depanare.
Ildasm.exe (Intermediate Language Disassembler) poate vizualiza EXE i DLL ntr-un format
accesibil utilizatorului.
Tipologia controalelor dintr-o aplicaie ASP.NET
HTML Controls preluate din HTML clasic; accesul la informaii este greoi (trebuie analizat
pagina de rspuns).
16
15.10.2015
HTML Server Controls identice cu cele de mai sus, dar prin runat = server devin
accesibile prin program i ruleaz pe server; asigur acces uor la informaii prin intermediul
proprietilor i evenimentelor.
Web Server Controls specifice ASP.NET; acoper toate controalele de mai sus i ceva n plus;
ofer alt model, mai consistent, de programare.
Validation Controls
User Controls, Composite Controls i CustomControls extensii sau adaptri, create de
utilizator
17
15.10.2015
Categorii de controale
tag HTML
<input>
<img>
<textarea>
<a>
<button>
<form>
<table>
<td> <th>
<tr>
<select>
Categoria
Nume HTML
Descriere
<input type=button | submit | reset>
<input type=checkbox>
<input type=file>
<input type=hidden>
<input type=image>
<input type=radio>
<input type=text | password>
Input
HtmlInputButton
HtmlInputCheckBox
HtmlInputFile
HtmlInputHidden
HtmlInputImage
HtmlInputRadioButton
HtmlInputText
Input
HtmlImage
Image
Input
HtmlTextArea
Text multilinie
Container
HtmlAnchor
Ancor
Container
HtmlButton
Container
HtmlForm
Container
HtmlTable
Container
HtmlTableCell
Container
HtmlTableRow
Linie de tabel
Container
HtmlSelect
Meniu pull-down
18
15.10.2015
Categorii de controale
tag HTML
Categoria
Container
Nume HTML
HtmlGenericControl
19
Descriere
Control HTML generic
15.10.2015