coimbra asp net

63
ASP .NET 2.0 Jorge Ricardo Calejo Microsoft Student Partner http://weblogs.pontonetpt.com/calejo [email protected]

Upload: efzago

Post on 05-Dec-2014

31 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Coimbra ASP Net

ASP .NET 2.0

Jorge Ricardo Calejo

Microsoft Student Partner

http://weblogs.pontonetpt.com/calejo

[email protected]

Page 2: Coimbra ASP Net

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- Scripts no Cliente e Servidor- Validações no Cliente e Servidor- Gestão de Estados no Cliente e Servidor- ADO .net- API Membership- Profiles

Page 3: Coimbra ASP Net

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 é � 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”

Page 4: Coimbra ASP Net

Aplicação ASP .net

Page1.

aspx

Web

Forms

Code-

behind

Web.

config

Cache

XML

Data Database

InternetPage2.

aspx

Web

ServicesComponents

behind

pages

global.

asax

machine.

configOutput

Page 5: Coimbra ASP Net

Estrutura de Aplicação Web

wwwroot

Inetpub

ProjectA

My DocumentsMy Documents

Visual Studio

Projects

Solution

Bin

ProjectA

Development FilesDevelopment Files

Assembly FilesAssembly Files

WebForm1.aspx

WebForm1.aspx.cs(Code-behind page)

Solution

Solution.sln ProjectA.csproj

ProjectA.dllBuild

Page 6: Coimbra ASP Net

Arquict. Cliente Servidor

Page 7: Coimbra ASP Net

Web Forms – Modelos de

Objectos� As Web Forms possuem um modelo de

objectos interno constituído por:� Objecto Server

� Representa o Servidor Web� 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

Page 8: Coimbra ASP Net

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 ,...)

Page 9: Coimbra ASP Net

HTML Server Controls

� Baseados nos elementos HTML

� Runat=“server”

� Existem no namespace System.Web.UI.HtmlControls

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

runat="server" />

Page 10: Coimbra ASP Net

Web Server Controls

� Existem no namespace System.Web.UI.WebControls

Sintaxe ASP.net

<asp:TextBox id="TextBox1"

HTML gerado

<asp:TextBox id="TextBox1"

runat="server">Text_to_Display

</asp:TextBox>

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

value="Text_to_Display"

Id="TextBox1"/>

Page 11: Coimbra ASP Net

Escolher Control Adequado

Preferir trabalhar com um modelo de

programação orientado a objectos

Preferir trabalhar com a estrutura de

objectos HTML

Optar porOptar por

Web Server ControlsWeb Server Controls se:se:

Optar porOptar por

HTML Server ControlsHTML Server Controls se:se:

Necessitar de funcionalidades

especificas tais como um “calendar”

O controlo irá interagir com scripts no

cliente e no servidor

Pretender desenvolver páginas que

serão visualizadas por diversos tipos

de browsers

Pretender fornecer rapidamente

funcionalidades ASP.NET a páginas

HTML já existentes

A largura de banda disponível não

constituir um problemaA largura de banda for limitada

Page 12: Coimbra ASP Net

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

Page 13: Coimbra ASP Net

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

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

</HTML>

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

private void btn_Click(object sender,

System.EventArgs e)

{

. . .

}

</SCRIPT>

Page 14: Coimbra ASP Net

Programação Code-Behind

� Código e HTML em ficheiros separados� Programadores e Web Designers podem trabalhar de

forma independente

Ficheiros separadosUm só ficheiro

Form1.aspxForm1.aspx Form1.aspxForm1.aspx Form1.aspx.csForm1.aspx.cs

<tags><tags> códigocódigo

códigocódigo

Ficheiros separadosUm só ficheiro

Page 15: Coimbra ASP Net

O que são Event Procedures?

� Acções em resposta à interacção do utilizador com os controls numa página

Page 16: Coimbra ASP Net

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">� <SCRIPT language="language">

Internet .HTM

Pages

Page 17: Coimbra ASP Net

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">� <SCRIPT language=“cs“ runat="server">

Internet.ASPX

Pages

Page 18: Coimbra ASP Net

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

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

}

permite verificar se se trata do primeiro pedido ou não.

Page 19: Coimbra ASP Net

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 pretendidapretendida

� Bloqueia o processamento da página até que todos os valores sejam validos.

Page 20: Coimbra ASP Net

Validação no Cliente e no

Servidor

� ASP.NET cria processos de validação no cliente e no servidor� Validação no Cliente

�Dependente do browser�Resposta imediata Valid?

User Enters

Data Error

Message

�Resposta imediata�Reduz número de pedidos ao servidor

� Validação no servidor

�Repete todas as validações efectuadas no cliente�Permite utilizar recursos externos (p.e. bases de dados)

Valid?

Valid?

No

No

Yes

Yes

Client

Server

Web Application

Processed

Page 21: Coimbra ASP Net

Controlos de Validação

O ASP.NET fornece controlos de validação para:

� Comparar valores

� Comparar com uma fórmula pré-definida� 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

Page 22: Coimbra ASP Net

Controlos de Validação

<asp:TextBox id="txtName" runat="server" />

11

22

33

Colocar o control na web form

Seleccionar o controlo que se pretende validar

Configurar as propriedades de validação

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

<asp:TextBox id="txtName" runat="server" />

Page 23: Coimbra ASP Net

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

Page 24: Coimbra ASP Net

Controlos de Validação

� RequiredFieldValidator

� CompareValidator

� RangeValidator� RangeValidator

� RegularExpressionValidator

� CustomValidator

� ValidationSummary

Page 25: Coimbra ASP Net

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 webdentro de uma aplicação web

� Não contém as etiquetas <HTML>, <BODY> e <FORM>

� Possui directiva @Control

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

<%@ Control Language=“c#" %>

Page 26: Coimbra ASP Net

Porquê utilizar User

Controls?

Control1.ascx Aplicação A Aplicação B

� Reutilização de componentes de interface e de código

Page2.aspx

Page1.aspx

Page1.aspx

Page 27: Coimbra ASP Net

Gestão de Estado

First Name

Please enter your logon information:

John

Login.aspx Login.aspx

Please enter your logon information:

John

First Name

Sem gestão de estado Com gestão de estado

Last Name

John

Submit

Chen

Web ServerWeb Server

Hello John Chen

Greetings.aspx

John

Submit

Chen

Hello

Greetings.aspx

I forget who you

are!!

Last Name

Page 28: Coimbra ASP Net

Tipos de Gestão de Estado

No No ServidorServidor No ClienteNo Cliente

Objecto Application

� Informação fica disponível para todos

Cookies

� Ficheiro de texto com informação do � Informação fica disponível para todos

os utilizadores da aplicação

� Ficheiro de texto com informação do

estado

Objecto Session

� Só o utilizador da sessão terá acesso

á informação

Propriedade ViewState

� Permite guardar valores entre pedidos

á página

Base de Dados

� Poderá ser utilizada uma BD para

manter informação do estado

Query strings

� Informação inserida no final da URL

Page 29: Coimbra ASP Net

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

Page 30: Coimbra ASP Net

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

30

� Limite ao tamanho da informação

� Restrições no cliente ao tamanho de ficheiros

Servidor

Cliente

Cookies

Page 31: Coimbra ASP Net

ADO .NET

Ligações a Base de Dados

Page 32: Coimbra ASP 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� SQL - namespace System.Data.SqlClient

Ap

lica

tiv

o .

Ne

t

Informação

Informação

SQL Server

Objectos

OLE DBOLE DB

Objectos

OLE DB

TDS

Page 33: Coimbra ASP Net

Acesso a Base de Dados

Page 34: Coimbra ASP Net

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

Page 35: Coimbra ASP Net

ADO .net

� ObjectDataSourceEnables 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.

� SqlDataSourceEnables 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� AccessDataSourceEnables you to work with a Microsoft Access database. Supports sorting, filtering, and

paging when data is returned as a DataSet object.

� XmlDataSourceEnables you to work with XML data, especially for hierarchical ASP.NET server controls

such as the TreeView or Menu controls. Supports filtering capabilities using XPathexpressions 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]

Page 36: Coimbra ASP Net

ADO .net

� Ligados a Data Source Controls via DataSourceID

� Suporte a selecção, ordenação, paginação, edição

GridView DetailsView FormView

Page 37: Coimbra ASP Net

ADO .net

� Declarative Data Binding

� Configuração no Web.config

<connectionStrings><add name="northwindConnectionString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;

� Página .aspx

connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\dotnet2_0_projectos\northwind.mdb"

providerName="System.Data.OleDb"/></connectionStrings>

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

Page 38: Coimbra ASP Net

ADO .net

Page 39: Coimbra ASP Net

ADO .net

� Configurar GridView

Page 40: Coimbra ASP Net

ADO .net

Page 41: Coimbra ASP Net

API Membership e Login

� Web Site Administration Tool

Page 42: Coimbra ASP Net

Membership e Login

� Membership e Login� Objectivos:

� Criar página principal com link para login� LoginStatus control

� Abrir página de login – Login.aspx� 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

Page 43: Coimbra ASP Net

API Membership e Login

� Criar Utilizador Membership� Asp.Net Configuration -> Security

� Criar utilizador:� User name� 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

Page 44: Coimbra ASP Net

API MEMBERSHIP

Controlo de Utilizadores

Page 45: Coimbra ASP Net

Criar Regras� Inserir regras de acesso para uma dada

directoria ( p.e. memberpages)

� Utilizar Web Site Administration Tool

� Security -> Create Access Rules

Page 46: Coimbra ASP Net

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><system.web>

<authentication mode="Forms" />

</system.web>

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

� Inserir controlo Login

Page 47: Coimbra ASP Net

Controlos de Login

� Registar novo utilizador

� Criar página register.aspx

� Inserir controlo CreateUserWizard

� Configurar propriedade ContinueDestinationPageUrl para a � Configurar propriedade ContinueDestinationPageUrl para a página principal

Page 48: Coimbra ASP Net

Controlos de Login

� ChangePassword:� Namespace: System.Web.UI.WebControls � Sintaxe:

[BindableAttribute(false)]public class ChangePassword : CompositeControl,

INamingContainer INamingContainer � Propriedade SuccessPageUrl

� PasswordRecovery:

� Namespace: System.Web.UI.WebControls

� Sintaxe:

[BindableAttribute(false)]

public class PasswordRecovery : CompositeControl

Page 49: Coimbra ASP Net

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

Page 50: Coimbra ASP Net

Class Membership

� Alguns métodos � ValidateUser

� CreateUser

� DeleteUser

� FindUsersByName� FindUsersByName

� GetAllUsers

� GetNumberOfUsersOnline

� ….

Page 51: Coimbra ASP Net

PROFILES

Informação de Utilizadores

Page 52: Coimbra ASP Net

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

Page 53: Coimbra ASP Net

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

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

Page 54: Coimbra ASP Net

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;

}

Page 55: Coimbra ASP Net

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:� É 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>

Page 56: Coimbra ASP Net

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

Page 57: Coimbra ASP Net

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

Page 58: Coimbra ASP Net

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

Page 59: Coimbra ASP Net

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 authorizationdo web.config.

<authentication mode="Forms" >

<forms name=".ASPXAUTH"

loginUrl="Login.aspx“

protection="Validation“

timeout="999999" />

</authentication>

<authorization>

<deny users="?" />

</authorization>

Page 60: Coimbra ASP Net

Autenticação ASP .net Forms

Conteúdo das tabelas: aspnet_Profile e aspnet_Users

Page 61: Coimbra ASP Net

Mais Informação...

� MSDN Library

� http://msdn.microsoft.com/library

� .net framework center

� http://msdn.microsoft.com/netframework/� 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/

Page 62: Coimbra ASP Net

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

Page 63: Coimbra ASP Net

� Jorge Ricardo Calejo

� Microsoft Student Partner

� http://weblogs.pontonetpt.com/calejo

[email protected]