HeaderBlog
LaConoscenza.NET
Pagina aspx
Visualizza l'intero eBook ASP.NET  

Una pagina ASP.NET è un oggetto denominato web form, molto simile ad un’applicazione windows. E' costituito da un insieme di web form, ognuno dei quali contiene oggetti, cioè parti di codice lato client HTML, controlli server o altri oggetti ereditati, per esempio, mediante la direttiva Import.

Una pagina ASP.NET è essenzialmente costituida da due file strettamente connessi:

  • un file con l’estenzione .aspx, in cui vi è memorizzato il codice dichiarativo
  • un file con l’estensione .aspx.cs (se il linguaggio utilizzato è C#), in cui vi è memorizzato il codice della classe associta alla pagina aspx.
  • Il collegamento fra i due file è realizzato mediante una dichiarazione inserita all’inizio del file con l’estensione .aspx. Il formato è il seguente:

<% @ Page CodeFile ="Default.aspx.cs" Inherits ="Blog_Default" %>

La direttiva CodeFile indica il nome del file in cui è contenuto il codice associato alla pagina, mentre Inehrits indica il nome della classe che deriva System.Web.UI.Page,in cui  è inserito il codice.

Una pagine ASP.NET, se non è stata già compilata, la prima volta che viene richiesta avviene la compilazione just-in-time. La classe compilata è detta assembly e viene salvata sul disco per essere riutilizzata alla successiva richiesta.

La classe Page

Quando un PC client richiede una pagina con estensione .aspx, presente sul web server, i componenti inseriti nella pagina sonocompilati in modo da formare un'unica entità. L’oggetto risultante viene utilizzato per elaborare le richieste in arrivo, al fine di restituire i dati richiesti dal PC client. Questa unità è una classe che eredita, dalla classe Page del framework, una serie di caratteristiche. La classe page è quindi un contenitore per tutti i componenti inseriti nella pagina. Alcune delle più importanti proprietà sono:

  • Application. Per ogni applicazione web, vi è un'istanza di questo oggetto che viene condivisa da tutti i client che accedono all'applicazione.
  • Session. E' un riferimento all'oggetto Session che gestisce la sessione corrente
  • Cache. Viene utilizzata per memorizzare dati che restano inalterati tra successive richieste delle pagine.
  • EnableViewState. Valore booleano che indica se i comandi server devono memorizzare il proprio ViewState
  • IsPostBack. Indica che la pagina viene caricata per la prima volta
  • Request. Consente di accedere alle informazioni relative alla richiesta HTTP
  • Response. Consente di accedere e modificare la risposta HTTP

Alcuni dei metodi della classe page sono:

  • DataBind Associa i dati ad un oggetto
  • FindControl Consente di individuare un control nella pagina
  • MapPath Recupera il percorso fisico di uno specifico percorso virtuale

 

Data Inserimento Post 27/12/2008 9.34.36  |  Social Bookmark
  • Digg
  • del.icio.us
  • Google
  • Yahoo
  • Technorati
  • Facebook
  • OKNOtizie
  • Email
 
Il concetto di postback
Visualizza l'intero eBook ASP.NET  

Prima di ASP.NET, per elaborare l’input degli utenti occorreva scrivere due pagine. La prima di natura statica conteneva un tag che inviava, mediante l'attributo action, una serie di campi ad seconda pagina di tipo dinamica, il cui compito era di elaborare i valori inviati. Il postback in ASP.NET rende invisibileal programmatore questo meccanismo, attraverso il controllo server form.

Il form server side è indispensabile per gestire i controlli server, si può omettere solo se non si prevede una interazione con la pagina. L'attributo method predefinito è post ed i valori sono disponibili nella collezione Request.Form.

Con la medesima tecnica viene mantenuto lo stato di alcuni controlli, mediante la variabile ViewState. Il ViewState è una variabile stringa, memorizzata in un campo nascosto della pagina aspx, in cui viene salvato lo status della pagina prima di essere inviata al server. Questo status viene letto e trasferito nei diversi control quando il server restituisce la pagina al browser. Il  ViewState consente quindi di ricostruire lo stato della pagina, in quanto le comunicazioni HTTP client-server sono prive di stato.

L’architettura postback offre la possibilità di realizzare pagine HTML contenenti controlli con cui l'utente può interagire. I controlli attivano eventi che il programmatore deve scrivere per realizzare gli opportuni handler che devono gestire l'interazione. Quando si attiva la richiesta di un web form, vengono generati i seguenti eventi:

  • Page_Init,  viene generato quando la pagina deve essere inizializzata
  • Page_Load viene generato quando la pagina deve essere caricata
  • Control Event viene generato quando è un comando (ad esempio un pulsante) che attiva l'inviato della pagina al server.
  • Page_Unload viene generato quando la pagina è scaricata dalla memoria

La differenza tra il Page_Init ed il Page_Load è che nel Page_Init il ViewState non è stato ancora caricato, per cui i comandi mantengono i valori predefiniti anziché i valori impostati durante il postback.

Per gestire l'evento Page_Load, in genere si utilizza la proprietà IsPostBack della classe Page. Se IsPostBack è true, ci troviamo in un contesto di postback, cioè la pagina è stata già caricata, ma viene restituita al web server a seguito del verificarsi di un evento sul client. Se IsPostBack è falsa, la pagina viene caricata per la prima volta.

Nella pagina aspx, la prima riga è una direttiva che specifica il linguaggio utilizzato, dove si trova il codice, il nome della classe da cui ereditare e l'AutoEventWireup, impostato su true per default, per indicare che deve essere generato in automatico un evento al caricamento della pagina, che sarà gestito dal metodo Page_Load, presente nel file che contiene il codice, Default.aspx.cs.

Data Inserimento Post 27/12/2008 9.34.36  |  Social Bookmark
  • Digg
  • del.icio.us
  • Google
  • Yahoo
  • Technorati
  • Facebook
  • OKNOtizie
  • Email
 
Le Master page
Visualizza l'intero eBook ASP.NET  

In un’applicazione Windows, un Form  è una classe che può contenere controlli da cui è possibile derivare oggetti mediante l’ereditarietà visuale, mentre in un'applicazione web ciò non è possibile,  a causa della presenza di codice di markup.

In ASP.NET 1.x e successive è possibile, mediante gli User Control, definire in un file separato una parte di una pagina ASPX da poter successivamente inserire in una o più pagine web.

In ASP.NET 2.0 sono state introdotte le Master Pages e le Content Pages, che non realizzano l'ereditarietà visuale, ma forniscono una struttura comune (grafica e logica), che rende possibile inserire dinamicamente in una pagina principale (o Master) deverse pagine di contenuto.  Una Master Page è essenzialmente un template, definito in un file che deve avere l'estensione .master. E' una normale pagina aspx, in cui la direttiva @Page è stata sostituita dalla direttiva @Master.

  • Una Master page, oltre ai normali controlli, contiene anche i ContentPlaceHolder
    • cioè aree riempibili con contenuti definiti nelle sezioni di Content Pages.
    • Una Master Page priva di controlli ContentPlaceHolder, non ha senso.

Tipicamente, in una Master Page vengono inseriti tutti i controlli che devono essere condivisi, mentre le parti dinamiche vengono definite mediante controlli segnaposto la cui sintassi è la seguente  <asp:ContentPlaceHolder />

Le pagine di contenuto forniscono solo i contenuti, presentandoli secondo le impostazioni della Master Page a cui fanno riferimento. Una Content Page è una pagina ASPX che contiene solo controlli Content Pages. Alla Content Page viene associata una Master Page  contenente controlli  ContentPlaceHolder.

  • La corrispondenza tra Content e ContentPlaceHolder si basa sul valore della proprietà ID del placeholder.
  • Un controllo Content viene associato a un controllo ContentPlaceHolder tramite la relativa proprietà ContentPlaceHolderID.
  • All'interno di una pagina di contenuto solo un controllo Content può fornire il contenuto per un controllo ContentPlaceHolder nella pagina master.

Una Master Page è quindi un contenitore di modelli:

  • Offre una comoda soluzione per inserire in una struttura, i contenuti di un insieme di pagine che costituiscono i diversi contenuti da visualizzare.
  • Utilizza un segnaposto di contenuto per definire le sezioni della pagina master che successivamente saranno sostituite con il contenuto definito nelle pagine Content . 

Quando si utilizzano le Master Page e le relative pagine di Contenuto, occorre aggiungere i tag di documento XHTML (html, head e body), esclusivamente nella pagina master, in quanto nelle Content Pages vi sono solo i contenuti da inserire nei segnaposto della pagina master.

Una Master Page può essere inserita in un progetto mediante la selezione Aggiungi nuovo elemento e quindi Master-Page. La struttura della Master Page è la seguente:

<% @Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits= "MasterPage"%>

<html>
<head id ="HeadMP" runat ="server">
    < title > Master Page</title>
</ head >
< body >
    < form id ="formMP" runat ="server">
        < div >
            < asp: contentplaceholder id ="PlaceHolder" runat ="server">

            </ asp: contentplaceholder >
        </ div >
    </ form >
</ body >
</ html >

Un'associata content Page ha la seguente struttura:

<% @ Page Language ="C#" MasterPageFile ="MasterPage.master" AutoEventWireup ="true" CodeFile ="Home.aspx.cs" Inherits ="Home" Title ="Untitled Page" %>

 

< asp: Content ID ="Content2" ContentPlaceHolderID ="PlaceHolder" runat ="server">

    < asp: Label ID ="Label1" runat ="server" Text ="Benvenuto"></ asp: Label >

</ asp: Content >

 

Data Inserimento Post 28/12/2008 9.34.36  |  Social Bookmark
  • Digg
  • del.icio.us
  • Google
  • Yahoo
  • Technorati
  • Facebook
  • OKNOtizie
  • Email
 
Site Navigation
Visualizza l'intero eBook ASP.NET  

Site Navigation, è una caratteristica che consente di creare una struttura necessaria per navigare in un’applicazione web in modo sicuro, facile e intuitiva. ASP.NET offre un sistema, basato sul concetto di Provider. Al Site Navigation è possibile associare tre  nuovi controlli:

  • Menu, controllo che visualizza la struttura del sito attraverso un menu a tendina personalizzabile.
  • TreeView, controllo che visualizza la struttura del sito in un menu ad albero .
  • SiteMapPath, controllo che visualizza la posizione corrente dell'utente rispetto alla struttura del sito.

Ognuno di questi controlli richiede la presenza della "Site Map", una fonte di dati in grado di rappresentare l'intera struttura del sito. La Site Map può essere definita in uno o più file .sitemap (file XML) oppure da uno o più custom provider.

Definizione della Site Map 

Sono possibili diversi modi per creare la Site Map. Di default, ASP.NET 2.0 si aspetta di trovare nella root dell'applicazione il file web.sitemap; con una struttura ben definita.

<? xml version = "1.0"encoding="utf-8" ?>

< siteMap xmlns = "http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >

      < siteMapNode url = ""title="Menu"description="Menu">

            < siteMapNode url = "Home.aspx"title="Home"  description="Home" />

           < siteMapNode url = "Persone.aspx"title="Persona"  description="Persona" />

      </ siteMapNode >

</ siteMap >

Questo file è una collezione di oggetti di tipo SiteMapNode, con la dichiarazione dei suoi 3 principali attributi: url (indirizzo della pagina), title (titolo della pagina) e description, (descrizione della pagina, cioè il contenuto del relativo tooltip).

E' possibile cambiare il nome del .sitemap oppure è necessario dover gestire più di uno, in questo caso è sufficiente dichiarare nel web.config che esiste un provider specifico (che puo essere anche sempre lo stesso) per ogni file .sitemap creato. Un esempio di dichiarazione da inserire nel web.config è la seguente:

<siteMap defaultProvider =" Sitemap1" >
<
providers >
    <
add name = "SiteMap1" type = "System.Web.XmlSiteMapProvider"  
           
siteMapFile = "First.sitemap" />
    <
add name = SiteMap2" type ="S ystem.Web.XmlSiteMapProvider"  
           
siteMapFile =" Second.sitemap" />
</
providers >
</
siteMap >

Data Inserimento Post 28/12/2008 9.34.36  |  Social Bookmark
  • Digg
  • del.icio.us
  • Google
  • Yahoo
  • Technorati
  • Facebook
  • OKNOtizie
  • Email