Domanda sull'articolo Applicare i Temi a Runtime in pagine con MasterP...

giovedì 24 agosto 2006 - 14.19

Giovanni_3478 Profilo | Senior Member

Ciao

Ho letto quest'artilcolo
http://www.dotnethell.it/tips/ChangeRuntimeThemes.aspx
intitolato
Applicare i Temi a Runtime in pagine con MasterPage in ASP.NET 2.0


Mi interessava questa parte:

per avere questa classe base caricata in ASP.NET Whidbey dobbiamo usare la directory "code" sotto la root della nostra applicazione web (fa la funzione del global.asax della versione 1.1) e renderla ovviamente pubblica:

Listato n°2
public class PaginaBase : System.Web.UI.Page
{
protected override void OnPreInit(EventArgs e)
{
this.Theme = (string)Session["tema"];
base.OnPreInit(e);
}
}

Ho inserito nella cartella appcode
il file PaginaBase.vb

per caricare lingua e tema in ogni pagine aspx

con il seguente codice:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Non capisco perchè ad ogni voce
Profile.GetPropertyValue
mi dice
GetPropertyValue non è un membro di profile
e me lo segna come errore.

Lo stesso codice
scritto in un'altra pagina all'interno della root non mi dà problemi.

Una classe inserita nella cartella appcode si "comporta" in maniera differente?

freeteo Profilo | Guru

ciao,
il problema è che tu sei dentro ad 1a classe la quale non sa da dove la chiami, a differenza invece della pagina che si esegue in un contesto http.
In poche parole devi sostituire a "profile" tutto il pezzo del contesto ovvero "HttpContext.Current.Profile" precio' diventa:

HttpContext.Current.Profile.GetPropertyValue(...


ciao.

Matteo Raumer
MCAD ... .net addicted :-)
http://blogs.dotnethell.it/freeteo

Giovanni_3478 Profilo | Senior Member

Ho apportato la correzione.

Il codice scritto in quel file non apporta nessun cambiamento alla pagina.

Ho provato ad eseguire il codice sopra in debug
ma mi sembra proprio che il file
(che ho chiamato PaginaBase.vb e che ho inserito nella cartella App_Code)
non viene proprio letto.

Mica bisogna cambiare qualcosa nel file web.config ?

Giovanni_3478 Profilo | Senior Member

up

freeteo Profilo | Guru

>Mica bisogna cambiare qualcosa nel file web.config ?
ma non hai letto bene l'articolo? perche spiego proprio che nel web.config dell'applicazione bisogna dirle che usi quella pagina come pagina base per tutte le pagine, ovvero:

<pages pageBaseType ="PaginaBase" >

e la classe deve essere chiamata proprio "PaginaBase" (ovviamente il nome lo puoi cambiare con quello che vuoi basta che sia lo stesso).
ciao.

Matteo Raumer
MCAD ... .net addicted :-)
http://blogs.dotnethell.it/freeteo

Giovanni_3478 Profilo | Senior Member

Fatta la modifica nel file web.config.

Per non far resituire questo errore

"Verificare che la classe definita in questo file di codice corrisponda all'attributo 'inherits' e che estenda la classe base corretta (ad esempio Page o UserControl)"

relativo al code Behind di una qualsiasi aspx avviata nel browser,

devo eliminare la pagina aspx.vb appunto di ogni pagina aspx.

Questo errore ti richiama qualcosa da suggerirmi?


Questa è il file PaginaBase.vb
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

freeteo Profilo | Guru

si, devi cambiare per i files di codice, la prima riga dicendogli di ereditare da paginabase, ad esempio:

Partial Class _Default
Inherits PaginaBase
...

e non piu' "System.Web.UI.Page" come fa di default
ciao.

Matteo Raumer
MCAD ... .net addicted :-)
http://blogs.dotnethell.it/freeteo

Giovanni_3478 Profilo | Senior Member

Grazie mille
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5