> > Articoli
> > Funzioni, Classi ed Oggetti
Una classe per separare HTML e ASP
Lo scopo della classe MTemplate é separare completamente la parte di codice "puro" dalla parte HTML, questo permette di modificare velocemente e senza problemi lo stile della parte realmente visibile agli utenti evitando di alterare i nostri script. Nulla ci vieta quindi di poter creare molte "maschere" ai nostri script velocemente e di poterle cambiare in modo rapido e pulito.
La classe MTemplate
Il passaggio dei valori tra lo script e il template avviene tramite dei "tag" speciali, {CHIAVE}, il che pemette la modifica dell'interfaccia anche a chi conosce solamente HTML.
In pratica, all'interno della nostra pagina in html avremo inserito, nei punti in cui desideriamo, i valori che varieranno dinamicamente in base allo script il quale, tramite la classe, li sostituirá. Per esempio potremmo avere nel template <font>{TITOLO}</font>, all'interno dello script assegneremo a {TITOLO} il valore che vorremmo senza preoccuparci di dove questo andrá poi a comparire, della formattazione, del colore, ecc.
La classe é disponibile in VBScript per ASP e in C# per ASP.NET.
Metodi
Costruttore:
C#
public MTemplate()
VBScript
private sub class_Initialize
--------------------------------------------------------------------------------
define()
Carica un template a cui viene assegnato una chiave identificativa, viene passata la chiave e il percorso del template.
C#
public void define(string chiave, string template)
VBScript
public sub define(chiave, template)
--------------------------------------------------------------------------------
assign()
Assegna un determinato valore a un determinato tag {CHIAVE}.
C#
public void assign(string chiave, string valore)
VBScript
public sub assign(chiave, valore)
--------------------------------------------------------------------------------
parse()
Effettua le sostituzioni dei vari tag e assegna il template compilato ad una chiave. Se il primo carattere della chiave é un + (es. +tabella) allora, se é giá stato effettuato un parsing con quella chiave il template compilato verrá accodato al/ai template giá presente.
C#
public void parse(string chiave, string valore)
VBScript
public sub parse(chiave, valore)
--------------------------------------------------------------------------------
get_parsed()
Restituisce il template compilato identificato dalla chiave assegnata con il metodo parse.
C#
public string get_parsed(string chiave)
VBScript
public string get_parsed(string chiave)
--------------------------------------------------------------------------------
print()
Stampa sul browser il template compilato identificato dalla chiave assegnata con il metodo parse.
C#
public void print(string chiave)
VBScript
public sub print(chiave)
Esempi
Ecco un esempio per chiarirsi definitivamente le idee.
Prendiamo il caso in cui dovremo stampare dei valori in forma tabellare. Avremo, per semplificare le cose, bisogno di 3 template. Il primo sará il template principale ( main.mtp ) che contiene i tag HTML essenziali:
<html>
<head><title>{TITOLO}</title></head>
<body>
{TABELLA}
</body>
</html>
Ora prepariamo il template per la tabella ( tabella.mtp), creiamo giá una riga della tabella con 2 celle con una intestazione fissa:
<table width="300" cellspacing="0" cellpadding="0">
<tr>
<td>Campo 1 :</td><td>Campo 2 :</td>
</tr>
{RIGA}
</table>
Per ultimo prepariamo la riga ( riga.mtp) che conterrá i 2 valori generati dallo script:
<tr>
<td>{VALORE1}</td><td>{VALORE2}</td>
</tr>
Passiamo ora al codice vero e proprio:
VBScript
<!--#include file="class_MT.asp"-->
<%
Dim obj, i
'Creiamo l'oggetto MTemplate
Set obj = New MTemplate
Call obj.define("main", "main.mtp")
Call obj.define("tabella", "tabella.mtp")
Call obj.define("riga", "riga.mtp")
'Creiamo un ciclo che assegni i valori alle righe
For i=1 to 4
Call obj.assign("VALORE1", i)
Call obj.assign("VALORE2", i*2)
Call obj.parse("+RIGA", "riga")
Next
'Abbiamo creato le nostre righe, ora inseriamole nella tabella
Call obj.parse("TABELLA", "tabella")
'Assegnamo il title alla pagina
Call obj.assign("TITOLO", "Prova")
'Anche la tabella é pronta, inseriamola nel template principale e stampiamo il risultato.
Call obj.parse("MAIN", "main")
Call obj.print("MAIN")
%>
C#
<!--#include file="class_MT.aspx"-->
<script language="c#" runat="server">
void Page_Load (Object Sender, EventArgs e) {
MTemplate obj;
//Creiamo l'oggetto MTemplate
obj=new MTemplate();
obj.define("main", "main.mtp");
obj.define("tabella", "tabella.mtp");
obj.define("riga", "riga.mtp") ;
//Creiamo un ciclo che assegni i valori alle righe
for(int i=1;i<=4;i++){
obj.assign("VALORE1", (string)i);
obj.assign("VALORE2", (string)(i*2));
obj.parse("+RIGA", "riga");
}
//Abbiamo creato le nostre righe, ora inseriamole nella tabella
obj.parse("TABELLA", "tabella");
//Assegnamo il title alla pagina
obj.assign("TITOLO", "Prova");
//Anche la tabella é pronta, inseriamola nel template principale e stampiamo il risultato.
obj.parse("MAIN", "main");
obj.print("MAIN");
}
</script>
Ecco cosa otterremo dalla nostra pagina finale:
<html>
<head><title>Prova</title></head>
<body>
<table width="300" cellspacing="0" cellpadding="0">
<tr>
<td>Campo 1 :</td><td>Campo 2 :</td>
</tr>
<tr>
<td>1</td><td>2</td>
</tr><tr>
<td>2</td><td>4</td>
</tr><tr>
<td>3</td><td>6</td>
</tr><tr>
<td>4</td><td>8</td>
</tr>
</table>
</body>
</html>
Download
La classe MTemplate 1.0 può essere scaricata cliccando qui.