coimbra asp net
TRANSCRIPT
ASP .NET 2.0
Jorge Ricardo Calejo
Microsoft Student Partner
http://weblogs.pontonetpt.com/calejo
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
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”
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
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
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� 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"
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"/>
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
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)
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>
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
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">� <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">� <SCRIPT language=“cs“ runat="server">
Internet.ASPX
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
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.
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.
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
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
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" />
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� 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 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#" %>
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
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
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
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
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
ADO .NET
Ligações a Base de Dados
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
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 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
� 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]
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;
� 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]">…
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� 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� 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
API MEMBERSHIP
Controlo de Utilizadores
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><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 � 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 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); 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� FindUsersByName
� GetAllUsers
� GetNumberOfUsersOnline
� ….
PROFILES
Informação de Utilizadores
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.
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.
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:� É 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: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 authorizationdo 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/� 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