3. Desenvolvimento de Aplicações Web com ASP.net

Propaganda
Programação para Internet Avançada
3. Desenvolvimento de
Aplicações Web com ASP.net
Nuno Miguel Gil Fonseca
[email protected]
Desenvolvimento de Aplicações Web com ASP.net
ASP.net?
Tecnologia de servidor que pode ser implementada
através das linguagem de programação VB.NET ou C#
Documentos escritos em HTML, no seio do qual se
insere código ASP.NET
Vantagens:
Performance
Ferramentas/Classes
Flexibilidade
Simplicidade
Maneabilidade
Escalabilidade e Disponibilidade
Personalização e Extensibilidade
Segurança
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet Avançada
2
Desenvolvimento de Aplicações Web com ASP.net
ASP.net?
O que acontece quando um cliente (browser) invoca um
recurso
O ASP.NET runtime analisa e compila o ficheiro numa
classe .NET
Esta classe é usada para processar de forma dinâmica os
vários pedidos
O ficheiro .aspx é compilado somente na primeira vez
que é invocado
Se forem feitas alterações ao ficheiro .aspx, este será
novamente compilado apenas na primeira vez que voltar
a ser acedido
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet Avançada
3
Desenvolvimento de Aplicações Web com ASP.net
ASP.net?
Exemplo de um ficheiro .aspx
<html>
<body>
<form action="Primeira.aspx" method="post" ID="Form1">
Category:
<select id="Category" size="1" NAME="Category">
<option>psychology</option>
<option>business</option>
<option>popular_comp</option>
</select>
<input type="submit" value="Lookup" ID="Submit1" NAME="Submit1">
</form>
</body>
</html>
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet Avançada
4
Desenvolvimento de Aplicações Web com ASP.net
Controlos de servidor
Existem diversos controlos que podem ser usados em
alternativa aos comuns elementos de HTML
Estes são declarados no ficheiro .aspx
Exemplos:
<asp:textbox runat=“server”>
<asp:dropdownlist runat=“server”>
<asp:button runat=“server”>
No momento da execução, estes server controls geram
automaticamente código HTML
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet Avançada
5
Desenvolvimento de Aplicações Web com ASP.net
Controlos de servidor
Em ASP.net as tags HTML são substituídas por
controlos de servidor:
HTML
Possibilidade de programação e alteração dinâmica dos valores dos
seus atributos
Permite manipular dinamicamente o aspecto e as funcionalidades da
página
WEB
Apresentam funcionalidades não disponíveis nos controlos HTML
Ex: Validação
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet Avançada
6
Desenvolvimento de Aplicações Web com ASP.net
Controlos de servidor
HTML
HtmlAnchor
HtmlButton
HtmlForm
HtmlGenericControl
HtmlImage
HtmlInputButton (Button)
HtmlInputButton (Reset)
HtmlInputButton (Submit)
HtmlInputCheckBox
HtmlInputFile
HtmlInputHidden
HtmlInputImage
HtmlInputRadioButton
HtmlInputText (Password)
HtmlInputText (Text)
HtmlSelect
HtmlTable
HtmlTableCell
HtmlTableRow
HtmlTextArea
A sintaxe dos controlos HTML é semelhante à das tags HTML
correspondentes, mas adicionalmente:
incluem sempre um atributo runat=“server”;
incluem o atributo id que permite que sejam referenciadas no
programa.
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet Avançada
7
Desenvolvimento de Aplicações Web com ASP.net
Controlos de servidor
HTML
Exemplos
<img id="imagem1" src="imagem1.gif" runat="server">
<input id="caixa1" type="text" runat="server">
<input id="chave1" type="password" runat="server">
<input id="radio1" type="radio" runat="server">radio1
<select runat="server">
<option>opção1</option>
<option>opção2</option>
</select>
<input id="ficheiro1" type="file" runat="server">
<input type="submit" value="Enviar" runat="server">
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet Avançada
8
Desenvolvimento de Aplicações Web com ASP.net
Controlos de servidor
WEB
AdRotator
Button
Calendar
CheckBox
CheckBoxList
DataGrid
DataList
DropDownList
Image
ImageButton
CompareValidator
CustomValidator
RangeValidator
RegularExpressionValidator
RequiredFieldValidator
ValidationSummary
Label
LinkButton
ListBox
HyperLink
Panel
PlaceHolder
RadioButton
RadioButtonList
Repeater
Table
TableCell
TableRow
TextBox
XML
Sintaxe semelhante à dos controlos HTML
Prefixo “<asp"
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet Avançada
9
Desenvolvimento de Aplicações Web com ASP.net
Controlos de servidor
WEB
Exemplos
asp:button
asp:checkbox
asp:dropdown
asp:hyperlink
asp:image
asp:imagebutton
asp:label
asp:listbox
asp:radiobutton
asp:table
asp:textbox
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet Avançada
10
Desenvolvimento de Aplicações Web com ASP.net
Controlos de servidor
WEB
Controlos de validação de formulários
CompareValidator
Compara um campo com um valor
CustomValidator
Controlo de validação criado pelo programador
RangeValidator
Verifica que o valor se encontra dentro dos limites
RegularExpressionValidator
Valida recorrendo a expressões regulares
RequiredFieldValidator
Verifica se o campo está preenchido
ValidationSummary
Apresenta um resumo dos resultados das validações
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet Avançada
11
Desenvolvimento de Aplicações Web com ASP.net
Controlos de servidor
WEB
Controlos de validação de formulários
Sintaxe
<asp:tipo_de_validacao
id="idControloValidacao"
runat="server"
ControlToValidate="id_controlo_a_validar"
ErrorMessage="mensagem de erro"
Text="texto a apresentar pelo controlo em caso de erro">
</asp:tipo_de_validacao>
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet Avançada
12
Desenvolvimento de Aplicações Web com ASP.net
Controlos de servidor
Cada controlo de servidor possui
Propriedades
Métodos
Eventos
Exemplo de resposta a um evento
<script language="C#" runat="server">
void SubmitBtn_Click(Object sender, EventArgs e) {
Menssagem.Text = "Olá" + CaixaDeTexto.Text;
}
</script>
…
<form runat="server">
<asp:TextBox ID="CaixaDeTexto" runat="server"></asp:TextBox>
<asp:Label ID="Mensagem" runat="server"></asp:Label>
<asp:button text="Lookup" OnClick="SubmitBtn_Click" runat="server"/>
</form>
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet Avançada
13
Desenvolvimento de Aplicações Web com ASP.net
Web Applications
Um dos principais aspectos a ter em conta aquando do
desenvolvimento de uma web application diz respeito ao facto de
esta se dever comportar tanto quanto possível com uma aplicação
stand-alone.
Por omissão o processamento de um formulário é feito no mesmo
ficheiro em que este é criado, tal pode originar alguns
problemas…
Imagine-se por exemplo que pretendemos fazer alguma operação
apenas aquando do acesso inicial à página (ou seja não queremos
que essa operação quando o formulário é submetido…)
Podemos usar para tal o evento Page_Load (que é executado
sempre que a página é carregada) e a propriedade IsPostBack
que indica se a página é resultante de um recarregamento (true)
ou se se trata do acesso inicial à página (false).
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet Avançada
14
Desenvolvimento de Aplicações Web com ASP.net
Web Applications
protected void Page_Load(object sender, EventArgs e){
if (Page.IsPostBack==false){
// Faz qualquer coisa se for o acesso inicial
}
}
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet Avançada
15
Desenvolvimento de Aplicações Web com ASP.net
Web Applications
Separação do código
Uma característica do ASP.net é a separação do código em
dois ficheiros diferentes
NomeDoFicheiro.aspx
Contém HTML e ASP.NET, para a interface gráfica
NomeDoFicheiro.aspx.cs
Contém C#, para código que confere as funcionalidades à interface
Vantagens:
Separação entre o HTML e o código, permitindo que o trabalho do designer não
interfira com o do programador
Facilidade de manutenção e reutilização do código
Protecção do código contra cópia
O primeiro ficheiro invoca o segundo através da directiva:
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="Default.aspx.cs" Inherits="_Default" %>
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet Avançada
16
Desenvolvimento de Aplicações Web com ASP.net
Web Applications
Separação do código
<%@ Page Language="C#" Inherits="mensagem" src="codigo.aspx.cs" %>
<html>
<head></head>
<body>
<form runat="server">
<asp:textbox id="txtMensagem" runat="server"/>
<asp:button id="botaoMensagem" text="Enviar" onClick="enviar" runat="server"/>
<asp:label id="lblMensagem" runat="server"/>
</form>
</body>
// ficheiro codigo.aspx.cs
</html>using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
public class mensagem : Page {
public Label lblMensagem;
public TextBox txtMensagem;
public void enviar (System.Object sender, System.EventArgs e) {
lblMensagem.Text = "A mensagem é: " + txtMensagem.Text;
}
}
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet Avançada
17
Desenvolvimento de Aplicações Web com ASP.net
Web Applications
Master pages
De modo a facilitar a interacção designers/programadores em
ASP.net existe a possibilidade de usar templates de páginas:
Master pages.
Nas master pages define-se a estrutura gráfica do site,
permitindo definir zonas de conteúdo dinâmico (os Content
Place Holders)
Caso se pretenda usar uma master page, aquando da criação
do Web form deve logo dizer-se qual a master page a ser
usada…
Uma master page poderá ter diversos Content Place Holders
Uma aplicação poderá ter várias master pages, no entanto
num web form só pode ser usada uma master page
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet Avançada
18
Desenvolvimento de Aplicações Web com ASP.net
Web Applications
Master pages
Master page
<%@ Master Language="C#" AutoEventWireup="true"
CodeFile="MasterPage.master.cs" Inherits="MasterPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<asp:contentplaceholder id="CPH1" runat="server"></asp:contentplaceholder>
</form>
</body>
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master"
</html>
AutoEventWireup="true" CodeFile="Default6.aspx.cs" Inherits="Default6"
Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="CPH1" Runat="Server">
Web form ém
Aqui fica só ó código respeitante ao conteúdo... não se incluem as tags
que é usada
body, head,html,... uma vez que essas já foras definidas na master page.
a master page
</asp:Content>
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet Avançada
19
Desenvolvimento de Aplicações Web com ASP.net
Web Applications
Variáveis de aplicação
Por vezes é necessário ter variáveis que persistam durante
toda a “vida” de uma aplicação, como por exemplo o número
de visitantes da aplicação…
Nestes casos recorre-se às variáveis de aplicação, que após
criadas, são válidas enquanto a aplicação estiver “viva” (ou
seja, enquanto estiver a correr no servidor)
Este tipo de variáveis têm ainda a característica de estarem
disponíveis para todos os utilizadores
// criar variável
Application.Add("nomeVar", "Carlos");
// alterar valor
Application.Set("nomeVar","Joaquim");
// obter valor
Label.Text = Application.Get("nome").ToString();
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet Avançada
20
Desenvolvimento de Aplicações Web com ASP.net
Web Applications
Application State
Como é sabido, no desenvolvimento de páginas web, ao
contrário de aplicações stand-alone, as variáveis criadas numa
determinada página só estão disponíveis para essa página;
Tal facto é limitativo, uma vez que há a necessidade de, por
exemplo, saber o valor que estava anteriormente para fazer
comparações com o valor actual…
A esta capacidade de guardar valores que persistam durante
mais do que uma iteração dá-se o nome de estado da
aplicação (application state).
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet Avançada
21
Desenvolvimento de Aplicações Web com ASP.net
Web Applications
Application State
Existem várias formas de implementar este conceito de estado
da aplicação:
ViewSate
Neste caso, o valor das variáveis que pretendemos que persistam segue
codificados num campo escondido juntamente com o código html da página.
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"
value="/wEPDwUKMTkwMjg4NjgzM2QYAQUeX19D
b250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgEFLmN
0bDAwJE1haW4kY3RsMDgkY3RsMDIkY3RsMDIkY3RsM
DIkY2hrUmVtZW1iZXItrG0oEOGpt+RTvZtP/1ZCJkLJ5A==" />
Adicionar uma variável/valor ao ViewState:
ViewState["Text"] = value;
Obter o valor de uma variável do ViewState:
string valor = (string)ViewState["Text"];
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet Avançada
22
Desenvolvimento de Aplicações Web com ASP.net
Web Applications
Application State
Existem várias formas de implementar este conceito de estado
da aplicação:
ViewSate (cont.)
Os valores do ViewState são guardado numa estrutura de dados semelhante a
uma Hashtable… o stateBag.
A estrutura stateBag para além de guardar os valores, permite igualmente
saber de uma forma simplificada se os valores sofreram alguma alteração
desde a última vez que foi chamado método stateBag.TrackViewState(),
através do método IsItemDirty
stateBag["key"] = "abc";
stateBag.IsItemDirty("key"); // false
stateBag.TrackViewState();
stateBag["key"] = "acb";
stateBag.IsItemDirty("key"); // true
Uma vez que os valores seguem junto com o HTML em todas as páginas da
aplicação, o ViewState deve ser usado com alguma moderação
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet Avançada
23
Desenvolvimento de Aplicações Web com ASP.net
Web Applications
Application State
Existem várias formas de implementar este conceito de estado
da aplicação:
Variáveis de sessão
Esta é eventualmente a forma mais conhecida para implementar o application
state..
As variáveis persistem desde o momento em que são criadas, até o browser
ser encerrado, após um período de inactividade de x minutos (20/30) ou até
serem destruídas pela aplicação...
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet Avançada
24
Desenvolvimento de Aplicações Web com ASP.net
Web Applications
Application State
Existem várias formas de implementar este conceito de estado
da aplicação:
Variáveis de sessão (cont.)
Adicionar valores à sessão
Session.Add("var", "valor");
Obter valor de uma variável da sessão
string v = Session["valor"].ToString();
Remover variável da sessão
Session.Remove("var");
Obter o identificador da sessão
string sid = Session.SessionID;
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet Avançada
25
Desenvolvimento de Aplicações Web com ASP.net
Web Applications
Application State
Existem várias formas de implementar este conceito de estado
da aplicação:
Profile
Com o objecto profile é possível definir state variables que podem ser usadas
como variáveis “normais” e não como valores guardados numa estrutura de
variáveis (ex. ViewState, Session)
Para poderem ser utilizadas, as variáveis do objecto Profile, têm que ser
definidas no ficheiro Web.config.
...
<profile enabled="true">
<properties>
<add name="nomeVar" allowAnonymous="true"/>
<add name="nomeVarNumerica" allowAnonymous="true" type="System.Int"/>
</properties>
</profile>
...
Profile.nomeVar = "Gil";
labelNome.Text = Profile.nomeVar;
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet Avançada
26
Desenvolvimento de Aplicações Web com ASP.net
Web Applications
Autenticação e autorização
Em ASP.net existe um conjunto de classes/métodos que
permite suportar o controlo de acesso a recursos,
criação/edição de utilizadores, etc.
Baseado nos conceitos:
Autentication
Verificar se a pessoa é quem diz ser.
Implementado através da validação de um par username/password
Authorization
Verificar se a pessoa tem permissão para executar o recurso pretendido
Implementado através da verificação de associação a determinadas funções
(Roles)
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet Avançada
27
Desenvolvimento de Aplicações Web com ASP.net
Web Applications
Autenticação e autorização
Com a plataforma .NET é possível usar um conjunto de tabelas
de base de dados pre-definidas para guardar toda a
informação referente a autenticação e autorização.
Para usar estas funcionalidades, basta:
Executar o “Web-Site ASP Configuration”;
Escolher a opção “Segurança”;
Seleccionar o tipo de autenticação (A partir da Internet)
E poderá imediatamente adicionar um utilizador…
Serão automaticamente criadas todas as tabelas necessárias para o
processo de autenticação e autorização
Os controlos disponíveis são:
Login, LoginView, LoginStatus, PasswordRecovery, LoginName,
ChangePassword, …
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet Avançada
28
Desenvolvimento de Aplicações Web com ASP.net
Web Applications
Autenticação e autorização
Quem não pretender usar esses controlos, mas pretender usar
as tabelas de base de dados, poderá usar os métodos da classe
Membership para programar manualmente as funcionalidades
de inserir, alterar, remover utilizadores, validar dados dos
utilizadores, …
Membership.CreateUser
Membership.UpdateUser
Membership.DeleteUser
Membership.GetAllUsers
Membership.GetUser
Membership.FindUserByEmail
Membership.FindUserByName
...
Para ver se quem está a aceder à página está autenticado:
if(User.Identity.isAuthenticated == false)
Response.Redirect("Login.aspx");
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet Avançada
29
Desenvolvimento de Aplicações Web com ASP.net
Web Applications
Membership
É ainda possível usar o mecanismo de perfis (ou funções ou
roles) disponibilizados pela plataforma.
Para activar essa funcionalidade, é necessário:
Executar o “Web-Site ASP Configuration”;
Escolher a opção “Segurança”;
Seleccionar a opção “Activar Funções”
Inserir uma função
Posteriormente, pode associar os utilizadores à função criada
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet Avançada
30
Desenvolvimento de Aplicações Web com ASP.net
Web Applications
Membership
Quem pretender manualmente adicionar/ remover utilizadores
das funções tem à sua disponibilidade os seguintes métodos
Roles.GetAllRoles
Roles.AddUserToRole
Roles.IsUserInRole
Roles.RemoveUserFromRole
Roles.GetRolesForUser
Para verificar se o utilizador autenticado está associado a uma
determinada função (assumindo que existe uma função
chamada Administrador)…
if(Roles.IsUserInRole("Administrador")==false)
Response.Redirect("NoPermissions.aspx");
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet Avançada
31
Desenvolvimento de Aplicações Web com ASP.net
Web Applications
Aceder a parâmetros no querystring (no endereço)
http://www.xpto.pt?valor=123
valor=Request["valor"].ToString();
Construir um endereço com parâmetros
Tanto os valores como o texto pode vir de uma base de dados
ou de outra qualquer fonte…
...
<asp:hyperlink id="HyperLink1" runat="server" NavigateUrl=""></asp:hyperlink>
...
...
HyperLink1.NavigateUrl = "sm.aspx?valor1=" + 1 + "&valor2=" + 2;
HyperLink1.Text = "Texto do hyperlink";
...
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet Avançada
32
Desenvolvimento de Aplicações Web com ASP.net
Web Applications
Globalização
Globalizar uma aplicação significa torná-la global, ou seja,
poder ser utilizado globalmente… por toda a gente…
Em termos práticos, significa que uma aplicação esteja
disponível em diferentes línguas (as labels, as mensagens de
erro/sucesso, os diálogos, etc.)
Como é óbvio, não vamos fazer uma versão do nosso site para
cada língua, em vez disso, podemos tomar algumas medidas
que nos permitam tornar a nossa aplicação disponível em
virtualmente qualquer língua do mundo.
Neste caso concreto, vamos apenas concertar-nos na
globalização da aplicação em “si”…
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet Avançada
33
Desenvolvimento de Aplicações Web com ASP.net
Web Applications
Globalização
A disponibilização de conteúdos em várias línguas não está
pois abrangida, mas tal processo implica geralmente a inclusão
de diversas tabelas de base de dados adicionais para albergar
os dados em outras línguas…
Podemos fazer a globalização ficheiro a ficheiro, ou então
criar um ficheiro de recursos globalizáveis para toda a
aplicação
Ficheiro a ficheiro
Começamos por adicionar um novo item “Resource file” à directoria “App_Local
Resources”.
O nome a dar ao Resource file deve ser igual ao nome do ficheiro aspx que
pretendemos globalizar mais “.resx”. Exemplo: Default.aspx.resx
Ao clicarmos no ficheiro .resx podemos editar o nosso resource file.
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet Avançada
34
Desenvolvimento de Aplicações Web com ASP.net
Web Applications
Globalização (cont.)
Ficheiro a ficheiro (cont.)
No atributo “Name” colocamos o recurso que pretendemos globalizar
Exemplo: labelNome.Text
No atributo “Value” colocamos o valor que esse atributo irá assumir
Exemplo: Nome
Repete-se este processo para todos os recursos que pretendermos
globalizar.
Caso queiramos criar ficheiros em outras línguas, devemos criar um
Resource file com o mesmo nome que o que foi criado por defeito, mas
com uma pequena alteração
Exemplo: Default.aspx.it.resx, Default.aspx.fr
fr.resx
O ficheiro no qual não é definida a língua é considerado o ficheiro a
apresentar por omissão (neste caso, Default.aspx.resx)
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet Avançada
35
Desenvolvimento de Aplicações Web com ASP.net
Web Applications
Globalização (cont.)
Ficheiro a ficheiro (cont.)
No ficheiro .aspx, no recurso a ser globalizado temos que inserir
informação retirar a propriedade Text e incluir:
<asp:Label ID="labelNome" runat="server" meta:resourceKey="labelNome">
</asp:Label>
Finalmente, ainda no ficheiro .aspx devemos adicionar informação sobre a
língua a ser utilizada por defeito
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="Default.aspx.cs" Inherits="_Default" Culture="auto:ptPT" UICulture="auto"%>
Importa referir, que a informação sobre qual língua que está a ser usada é
obtida através das propriedades do browser
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet Avançada
36
Desenvolvimento de Aplicações Web com ASP.net
Web Applications
Globalização (cont.)
Global a toda a aplicação
No caso de se pretender criar um Resource file global para toda a
aplicação, cria-se um ficheiro chamado myResources.resx, por exemplo,
na pasta App_GlobalResources
Resource files para outras línguas ficaram com o nome
myResources.fr.resx, etc…
Para adicionar os valores procede-se de forma semelhante à explicada
anteriormente (ex. Name = lNome, Value=Nome)
Para usar os valores definidos no Resource file, faz-se:
<asp:Label ID="lblNome" runat="server"
Text="<%$ Resources:myResources, lNome %>"> </asp:Label>
É igualmente necessário definir os valores para Culture e UICulture como
apresentado no slide anterior…
Também se pode proceder deste modo para definir recursos locais
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet Avançada
37
Desenvolvimento de Aplicações Web com ASP.net
Web Applications
Acessos à DB
Assume nos seguintes exemplos que o utilizador já possui uma
variável chamada ConnectionString que representa a
string de ligação à BD
Exemplo de uma string de ligação
Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\ASPNETDB.MDF;Integrated
Security=True;User Instance=True
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet Avançada
38
Desenvolvimento de Aplicações Web com ASP.net
Web Applications
Acessos à DB
SELECT
try{
SqlDataSource ds = new SqlDataSource();
ds.ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
ds.SelectCommand = "SELECT [nome] FROM [NomeTabela] WHERE [id] = @v1;";
ds.SelectParameters.Add("v1", label
Name.Text.ToString());
DataView dw = (DataView)ds.Select(DataSourceSelectArguments.Empty);
foreach (DataRow dr in dw.Table.Rows){
foreach (DataColumn dc in dw.Table.Columns){
Label2.Text = dr[dc.ToString()].ToString();
}
Label2.Text += "\r\n";
}
}catch (Exception de){
Label2.Text = "Ocorreu um erro a processar o pedido.\n\n" + de.ToString();
}
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet Avançada
39
Desenvolvimento de Aplicações Web com ASP.net
Web Applications
Acessos à DB
INSERT
try{
SqlDataSource ds = new SqlDataSource();
ds.ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
ds.InsertCommand = "INSERT INTO [NomeTabela] ([nome]) VALUES (@v1);";
ds.InsertParameters.Add("v1", labelName.Text.ToString());
ds.Insert();
} catch (Exception de) {
Label2.Text = "Ocorreu um erro a processar o pedido.\n\n" + de.ToString();
}
Label2.Text = "Novo registo inserido correctamente!";
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet Avançada
40
Desenvolvimento de Aplicações Web com ASP.net
Web Applications
Acessos à DB
UPDATE
try{
SqlDataSource ds = new SqlDataSource();
ds.ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
ds.UpdateCommand = "UPDATE [NomeTabela] SET [nome] = @v1 WHERE [id] = 1;";
ds.UpdateParameters.Add("v1", formName.Text.ToString());
ds.Update();
}catch (Exception de){
Label2.Text = "Ocorreu um erro a processar o pedido.\n\n" + de.ToString();
}
Label2.Text = "Registo alterado correctamente!";
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet Avançada
41
Desenvolvimento de Aplicações Web com ASP.net
Web Applications
Acessos à DB
DELETE
try{
SqlDataSource ds = new SqlDataSource();
ds.ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
ds.DeleteCommand = "DELETE FROM [NomeTabela] WHERE [id] = @v1;";
ds.DeleteParameters.Add("v1", formName.Text.ToString());
ds.Delete();
}catch (Exception de){
Label2.Text = "Ocorreu um erro a processar o pedido.\n\n" + de.ToString();
}
Label2.Text = "Registo apagado correctamente!";
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet Avançada
42
Desenvolvimento de Aplicações Web com ASP.net
Web Applications
Vários
Obter o endereço completo da directoria do ficheiro aspx que
está a ser executado
Server.MapPath(".");
Com alguns “..” e “/” é possível saber as directorias de todos
os ficheiros do Website
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet Avançada
43
Download