Vous êtes sur la page 1sur 63

ASP .NET 2.

Jorge Ricardo Calejo


Microsoft Student Partner
http://weblogs.pontonetpt.com/calejo
ricardo.calejo@gmail.com
Vamos abordar:

 O que é o ASP .net


- Web Forms
- Web e HTML Server Controls
- Programação Inline e Code-Behind
- Scripts no Cliente e Servidor
- Validações no Cliente e Servidor
- Gestão de Estados no Cliente e Servidor
- ADO .net
- API Membership
- Profiles
O que é o ASP .net 2.0

 Sucessor da tecnologia Active Server Pages


 Independente da linguagem utilizada
 Independente do browser cliente
 Informação inserida no cliente é
directamente processada no servidor
(conceito de Web Form)
 Criação de aplicações Web distribuídas por
meio de “Web Services”
Aplicação ASP .net

Web
Forms

Output Cache
Page1. Web.
aspx Code- config
behind
Page2. pages
Internet machine.
aspx config
global.
asax

Web XML
Database Components
Services Data
Estrutura de Aplicação Web
My Documents Inetpub

Visual Studio
wwwroot
Projects

Solution ProjectA

Solution.sln ProjectA.csproj
WebForm1.aspx
Development Files WebForm1.aspx.cs
(Code-behind page)

Assembly Files Bin


Build ProjectA.dll
Arquict. Cliente Servidor
Web Forms – Modelos de
Objectos
 As Web Forms possuem um modelo de
objectos interno constituído por:
 Objecto Server
 Representa o Servidor Web
 Objecto Page
 Representa a página Web
 Objecto Request
 Representa o pedido efectuado pelo browser cliente
 Objecto Response
 Represente a resposta a enviar ao cliente pelo servidor
Web Forms – Atributo Form

 Dentro do atributo FORM colocam-se


controlos denominados “Server Controls”
 Web Server Controls
 Intrinsic controls (asp:TextBox)
 Validation controls (asp:RequiredFieldValidator)
 Rich controls (asp:Calendar)
 List-bound controls (asp:DataGrid )
 Internet Explorer Web Controls
(http://www.asp.net/IEWebControls/Download.aspx)
 HTML Server Controls
 Controlos HTML básicos (DIV, IMG, HR ,...)
HTML Server Controls
 Baseados nos elementos
HTML

 Runat=“server”

 Existem no namespace
System.Web.UI.HtmlControls

<input type="text" id="txtName"


runat="server" />
Web Server Controls

 Existem no namespace
System.Web.UI.WebControls

Sintaxe ASP.net
<asp:TextBox id="TextBox1"
runat="server">Text_to_Display
</asp:TextBox>

HTML gerado

<input name="TextBox1" type="text"


value="Text_to_Display"
Id="TextBox1"/>
Escolher Control Adequado

Optar por Optar por


HTML Server Controls se: Web Server Controls se:

Preferir trabalhar com a estrutura de Preferir trabalhar com um modelo de


objectos HTML programação orientado a objectos

Pretender fornecer rapidamente Pretender desenvolver páginas que


funcionalidades ASP.NET a páginas serão visualizadas por diversos tipos
HTML já existentes de browsers

O controlo irá interagir com scripts no Necessitar de funcionalidades


cliente e no servidor especificas tais como um “calendar”

A largura de banda disponível não


A largura de banda for limitada
constituir um problema
Como programar em ASP .net

 Três métodos de implementar código:


 Colocar o código no mesmo ficheiro que contem os Server
Controls misturado com as definições dos mesmos (mixed)
 Colocar o código no mesmo ficheiro que contem os Server
Controls, mas numa zona separada das definições dos
controlos (inline code)
 Colocar o código num ficheiro separado (code-behind pages)
 Por defeito o VS .NET utiliza ficheiros separados de
código (code-behind)
Programação Inline

 Definição dos controls e código no mesmo ficheiro


 Secções separadas para o código e para o HTML

<HTML>
<asp:Button id="btn" runat="server"/>
</HTML>

<SCRIPT Language="c#" runat="server">


private void btn_Click(object sender,
System.EventArgs e)
{
. . .
}
</SCRIPT>
Programação Code-Behind
 Código e HTML em ficheiros separados
 Programadores e Web Designers podem trabalhar de
forma independente

Um só ficheiro Ficheiros separados

código
<tags> código
<tags>

Form1.aspx Form1.aspx Form1.aspx.cs


O que são Event Procedures?

 Acções em resposta à interacção do


utilizador com os controls numa página
Scripts no Cliente

 Só utilizados com controlos HTML


 Interpretado pelo browser e executado no cliente
 Não acede a recursos do servidor
 <SCRIPT language="language">

Internet .HTM
Pages
Scripts no Servidor

 Utilizado em qualquer tipo de Server Control


 Compilado e executado no servidor
 Tem acesso aos recursos do servidor
 <SCRIPT language=“cs“ runat="server">

.ASPX
Internet
Pages
Evento PostBack
 O evento Page_Load ocorre em cada
pedido á página.
 A propriedade IsPostBack do objecto Page
permite verificar se se trata do primeiro
pedido ou não.
private void Page_Load(object sender, System.EventArgs e)
{
if (!Page.IsPostBack)
{
//Código executado somente no primeiro pedido
}
//este código será executado em todos os pedidos
}
O que é a validação da
informação inserida pelo
utilizador?
 Verifica se o valor inserido num controlo está
minimamente coerente com a informação
pretendida
 Bloqueia o processamento da página até que
todos os valores sejam validos.
Validação no Cliente e no
Servidor
 ASP.NET cria processos de User Enters
validação no cliente e no servidor Data Error
 Validação no Cliente Message
Dependente do browser
Resposta imediata Valid?
Reduz número de pedidos ao No
servidor Client Yes
 Validação no servidor
Server
Repete todas as validações
efectuadas no cliente Valid?
No
Permite utilizar recursos
externos (p.e. bases de dados) Yes

Web Application
Processed
Controlos de Validação

O ASP.NET fornece controlos de validação


para:
 Comparar valores
 Comparar com uma fórmula pré-definida
 Verificar se um valor pertence a um intervalo
 Confrontar com expressões regulares
 Exigir preenchimento de informação
 Sumariar as validações inseridas numa página
Controlos de Validação
1 Colocar o control na web form
2 Seleccionar o controlo que se pretende validar
3 Configurar as propriedades de validação
<asp:TextBox id="txtName" runat="server" />

<asp:Type_of_Validator
id="Validator_id"
runat="server"
ControlToValidate="txtName"
ErrorMessage="Message_for_error_summary"
Display="static|dynamic|none"
Text="Text_to_display_by_input_control">
</asp:Type_of_Validator>
Controlos de Validação
 Pode haver vários controls de validação afectos a um
mesmo objecto
 Somente o RequiredFieldValidator verifica se a
informação está preenchida
Controlos de Validação

 RequiredFieldValidator

 CompareValidator

 RangeValidator

 RegularExpressionValidator

 CustomValidator

 ValidationSummary
O que é um User Control?

 Um User Control é um Web Server Control definido pelo


programador
 Tem extensão .ascx
 Simplifica a reutilização de componentes de interface
dentro de uma aplicação web
 Não contém as etiquetas <HTML>, <BODY> e <FORM>
 Possui directiva @Control
<%@ Control Language=“c#" %>

 Contem o código para tratar os seus próprios eventos


Porquê utilizar User
Controls?
 Reutilização de componentes de interface e
de código
Control1.ascx Aplicação A Aplicação B

Page1.aspx
Page1.aspx

Page2.aspx
Gestão de Estado
Sem gestão de estado Com gestão de estado

Login.aspx Login.aspx
Please enter your Please enter your logon
logon information: information:
First Name First Name
John John
Last Name Last Name
Chen Chen

Submit Submit Web Server


Web Server
Greetings.aspx Greetings.aspx
Hello
Hello John Chen

I forget who you


are!!
Tipos de Gestão de Estado

No Servidor No Cliente

Objecto Application Cookies


 Informação fica disponível para todos  Ficheiro de texto com informação do
os utilizadores da aplicação estado

Objecto Session Propriedade ViewState


 Só o utilizador da sessão terá acesso  Permite guardar valores entre pedidos
á informação á página

Base de Dados
Query strings
 Poderá ser utilizada uma BD para
 Informação inserida no final da URL
manter informação do estado
Gestão de Estado no Servidor
 O objecto Application permite armazenar
informação de toda a aplicação web
 O uso de Session está condicionado á sessão do
browser cliente
 A sessão ASP.NET é identificada pela propriedade
SessionID do objecto session

Servidor Web
Cliente
Variáveis de Sessão e de Aplicação

SessionID
Gestão de Estado no Cliente

 Utilização de cookies (persistentes / temporárias)


 Menos fiável que a gestão no servidor
 O utilizador pode apagar as cookies
 Limite ao tamanho da informação
 Restrições no cliente ao tamanho de ficheiros

Servidor
Cliente

Cookies

30
Ligações a Base de Dados

ADO .NET
Acesso a Base de Dados

 Namespace System.Data
 Modos de aceder à informação
 OLE DB – namespace System.Data.OleDb
 SQL - namespace System.Data.SqlClient

Objectos
Aplicativo .Net

OLE DB
OLE DB Informação

Objectos TDS Informação


OLE DB SQL Server
Acesso a Base de Dados
ADO .net

 Data Source Controls


 Um control Data Source é um objecto no qual se
pode declarativamente definir:
 Informação sobre a conexão com a base de
dados
 Informação de pesquisa , como instruções SQL ou
métodos a serem invocados.
 Comando para inserir, alterar e apagar dados.
 Parâmetros para comandos SQL
 Outras operações como: pagging, caching e
sorting
ADO .net
 ObjectDataSource
Enables you to work with a business object or other class and create Web applications that
rely on middle-tier objects to manage data. Supports advanced sorting and paging
scenarios unavailable with the other data source controls.
 SqlDataSource
Enables you to work with Microsoft SQL Server, OLE DB, ODBC, or Oracle databases.
When used with SQL Server, supports advanced caching capabilities. The control also
supports sorting, filtering, and paging when data is returned as a DataSet object.
 AccessDataSource
Enables you to work with a Microsoft Access database. Supports sorting, filtering, and
paging when data is returned as a DataSet object.
 XmlDataSource
Enables you to work with XML data, especially for hierarchical ASP.NET server controls
such as the TreeView or Menu controls. Supports filtering capabilities using XPath
expressions and enables you to apply an XSLT transformation to the data. The
XmlDataSource enables you to update data by saving the entire XML document with
changes.
 SiteMapDataSource
 Used with ASP.NET site navigation.
Data Source Controls Overview
[http://msdn2.microsoft.com/en-us/library/ms227679(VS.80).aspx]
ADO .net
 Ligados a Data Source Controls via DataSourceID
 Suporte a selecção, ordenação, paginação, edição

GridView DetailsView FormView


ADO .net
 Declarative Data Binding
 Configuração no Web.config

<connectionStrings>
<add name="northwindConnectionString"
connectionString="Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=D:\dotnet2_0_projectos\northwind.mdb"
providerName="System.Data.OleDb"/>
</connectionStrings>

 Página .aspx
<asp:SqlDataSource ID="SqlDataSource1" runat="server“
ConnectionString="<%$ ConnectionStrings:northwindConnectionString
%>“
ProviderName="<%$
ConnectionStrings:northwindConnectionString.ProviderName %>"
SelectCommand="SELECT [CompanyName… [City] FROM
[Customers]">…
ADO .net
ADO .net

 Configurar GridView
ADO .net
API Membership e Login
 Web Site Administration Tool
Membership e Login

 Membership e Login
 Objectivos:
 Criar página principal com link para login
 LoginStatus control
 Abrir página de login – Login.aspx
 Login control
 Validação do utilizador e regresso à página principal com
apresentação de sucesso na validação
 LoginView control
 Apresentação do nome do utilizador
 LoginName control
 Impedir acesso a páginas para utilizadores não autenticados
 Criar rules
API Membership e Login

 Criar Utilizador Membership


 Asp.Net Configuration -> Security
 Criar utilizador:
 User name
 Password
…
 Método de acesso:
 From the internet
 From a local area network

Nota: A informação de membership é guardado por omissão no


Microsoft SQL Server Express , no folder App_Data
Controlo de Utilizadores

API MEMBERSHIP
Criar Regras
 Inserir regras de acesso para uma dada
directoria ( p.e. memberpages)
 Utilizar Web Site Administration Tool
 Security -> Create Access Rules
Controlos de Login
 Criar página com Login Button
 Inserir controlo LoginStatus
 Login
 Este link referencia, por omissão, a página Login.aspx
 Web.config – Form Authentication

<system.web>
<authentication mode="Forms" />
</system.web>

 Criar página para fazer Login -> Login.aspx


 Inserir controlo Login
Controlos de Login
 Registar novo utilizador

 Criar página register.aspx


 Inserir controlo CreateUserWizard
 Configurar propriedade ContinueDestinationPageUrl para a
página principal
Controlos de Login
 ChangePassword:
 Namespace: System.Web.UI.WebControls
 Sintaxe:
[BindableAttribute(false)]
public class ChangePassword : CompositeControl,
INamingContainer
 Propriedade SuccessPageUrl

 PasswordRecovery:
 Namespace: System.Web.UI.WebControls
 Sintaxe:
[BindableAttribute(false)]
public class PasswordRecovery : CompositeControl
Class Membership
 ValidateUser da class membership

public void Login_OnClick(object sender, EventArgs args)


{
if (Membership.ValidateUser(UsernameTextbox.Text,
PasswordTextbox.Text))

FormsAuthentication.RedirectFromLoginPage(UsernameTextbox.Text,
NotPublicCheckBox.Checked);
else
Msg.Text = "Login failed. Please check your user name and password and try again.";
}

// codigo html inserir password e username


<body> <form id="form1" runat="server">
<h3>Login</h3> <asp:Label id="Msg" runat="server" /><br />
Username: <asp:Textbox id="UsernameTextbox" runat="server" /><br />
Password: <asp:Textbox id="PasswordTextbox" runat="server" /><br />
<asp:Button id="LoginButton" Text="Login" OnClick="Login_OnClick" runat="server" />
<asp:CheckBox id="NotPublicCheckBox" runat="server" /> Check here if this is <span >not</span> a public computer.
</form> </body> </html>
Class Membership
 Alguns métodos
 ValidateUser
 CreateUser
 DeleteUser
 FindUsersByName
 GetAllUsers
 GetNumberOfUsersOnline
 ….
Informação de Utilizadores

PROFILES
Objecto Profile
 O objecto Profile permite armazenar informação única de um utilizador.
Quando o utilizador visita novamente o site é possível usar a informação
armazenada para apresentar ao utilizador uma versão personalizada da
aplicação Web.

 Para personalizar uma aplicação é necessário:


 Guardar informação usando um identificador de utilizador único,
 Reconhecer o utilizador quando visita novamente o site, e
 Aceder a essa informação quando for necessário.

 Em ASP.NET 1.1 usava-se o objecto Session.


 Apresenta a desvantagem da volatilidade – por omissão persiste na
memória, e só durante a sessão.
 Também se podia armazenar informação em bases de dados, mas era
necessário escrever código para gravar e retribuir essa informação

 ASP.NET 2.0 introduz um novo objecto Profile que permite persistir os


dados do utilizador de um modo muito mais eficiente.
ASP .net 2.0 Profiles
 O serviço de Profile de ASP.NET 2.0 simplifica a tarefa de guardar dados por
utilizador.

 No objecto Profile pode-se armazenar objectos de qualquer tipo.

 O serviço de Profile trabalha com utilizadores autenticados e não


autenticados.

 Pode-se especificar um provider de Profile, sendo por omissão, usada a


instância SqlProfileProvider que armazena os dados do profile no servidor
Web local.

 Para poder usar o objecto profile é necessário primeiro activar o serviço de


Profile no ficheiro Web.config.

 No ficheiro Web.config configura-se o objecto Profile definindo uma lista de


propriedades cujos valores se pretendem manter.

 O serviço de Profile disponibiliza essa informação usando uma API


fortemente tipada, acessível em qualquer parte da aplicação.
Uso do objecto Profile
 Aplicação Web simples com apenas uma página:

protected void Page_Load(object sender, EventArgs e) {


if (Profile.PrimeiroNome != "") {
Panel1.Visible = false;
Response.Write("Bem-vindo " + Profile.PrimeiroNome + " " + Profile.UltimoNome);
}
else Panel1.Visible = true;
}

protected void Button1_Click(object sender, EventArgs e) {


Profile.PrimeiroNome = TextBox1.Text;
Profile.UltimoNome = TextBox2.Text;
}
Uso do Objecto Profile
 Server Error in '/Profiles' Application.
Compilation Error
Compiler Error Message: CS0117: 'System.Web.Profile.DefaultProfile' does not
contain a definition for 'PrimeiroNome‘
Source Error: Line 15: if (Profile.PrimeiroNome != "")

 É necessário activar o serviço de Profile:


No Solution Explorer, Add New Item… , Web Configuration File.
No ficheiro Web.config definem-se 2 propriedades – PrimeiroNome e UltimoNome.
<?xml version="1.0"?>
<configuration>
<system.web>
<profile>
<properties>
<add name="PrimeiroNome"/>
<add name="UltimoNome"/>
</properties>
</profile>
</system.web>
</configuration>
Uso do Objecto Profile

 É necessário refrescar a listagem do projecto no Solution Explorer para ver


a directoria App_Data criada e o ficheiro de base de dados ASPNET.MDF
Autenticação Windows
 Duplo clique na base de dados abre a janela Solution Explorer com as
tabelas da base de dados.
 Seleccionando o menu “Show Table Data” podemos ver o conteúdo de cada
tabela.
 Conteúdo das tabelas: aspnet_Profile e aspnet_Users
Autenticação ASP .net Forms
 Por omissão ASP.Net usa Autenticação Windows. Na aplicação Web
criada as propriedades do objecto Profile foram associadas ao nome
do utilizador Windows.
 Autenticação Windows é útil para aplicações Intranet, mas para
autenticar utilizadores externos é melhor usar autenticação
ASP.NET Forms.
 Vamos mudar o modo de autenticação de Windows para Forms no
ficheiro Web.config:
<?xml version="1.0"?>
<configuration>
<system.web>
<profile>
<properties>
<add name="PrimeiroNome"/>
<add name="UltimoNome"/>
</properties>
</profile>
<authentication mode="Forms" />
</system.web>
</configuration>
Autenticação ASP .net Forms
 Server Error in '/Profiles' Application.
This property cannot be set for anonymous users.
Vamos:
 Adicionar um nova página Login.aspx com o controlo Login.
 Adicionar um novo utilizador através do menu Website > ASP.NET
Configuration.
 Alterar o elemento authentication e adicionar o elemento authorization
do web.config.

<authentication mode="Forms" >


<forms name=".ASPXAUTH"
loginUrl="Login.aspx“
protection="Validation“
timeout="999999" />
</authentication>
<authorization>
<deny users="?" />
</authorization>
Autenticação ASP .net Forms
Conteúdo das tabelas: aspnet_Profile e aspnet_Users
Mais Informação...

 MSDN Library
 http://msdn.microsoft.com/library
 .net framework center
 http://msdn.microsoft.com/netframework/
 C#
 http://msdn.microsoft.com/vcsharp/
 ASP.net
 http://www.asp.net
 Laboratório .net do ISEP/IPP
 http://www.dei.isep.ipp.pt/labdotnet/
Tutoriais

 http://www.gotdotnet.com/

 http://www.w3schools.com/aspnet/

 http://www.asp-php.net/tutorial/asp.net/

 http://www.dei.isep.ipp.pt/ades/

 http://www.asp.net/learn/videos/default.aspx
 Jorge Ricardo Calejo
 Microsoft Student Partner
 http://weblogs.pontonetpt.com/calejo
 ricardo.calejo@gmail.com

Vous aimerez peut-être aussi