asp - asp.net - aspcode.it

COMMUNITY - Login
 Username:
 
 Password:
 
Voglio registrarmi!
Password dimenticata?
 Utenti on-line: 0
 Ospiti on-line: 5634
ASPCode.it - Store

  > > Articoli

Una classe per separare HTML e ASP

Data di pubblicazione: 09/03/2002        Voto della community: 3,50 (Votanti: 2)


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.




Utenti connessi: 5634