114 messaggi dal 19 marzo 2004
Ho realizzato una pagina dove l'utente seleziona la lingua preferita da utilizzare nel mio sito (profile.language="it-IT";)

Cercavo un punto, centralizzato, dove settare queste impostazioni.
Ho risolto con il global.asax dove scrivo:

void Application_BeginRequest(Object sender, EventArgs e)
{
String selectedLanguage = "it-IT";
System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture(selectedLanguage);
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(selectedLanguage);
}


il problema è che se nell'evento Application_BeginRequest sostituisco la prima riga con

String selectedLanguage = profile.language;

Mi che "profile non è ancora disponibile".

Esiste un punto centralizzato dove posso eseguire UNA VOLTA SOLA il codice di sopra (Application_BeginRequest) o devo eseguire detto codice in tutte le pagine?
3.121 messaggi dal 29 ottobre 2001
Contributi | Blog
Questa è la lista degli eventi che vengono richiamati quando dev'essere elaborata una pagina:

Application: BeginRequest
Application: PreAuthenticateRequest
Application: AuthenticateRequest
Application: PostAuthenticateRequest
Application: PreAuthorizeRequest
Application: AuthorizeRequest
Application: PostAuthorizeRequest
Application: PreResolveRequestCache
Application: ResolveRequestCache
Application: PostResolveRequestCache
Application: PreMapRequestHandler
Page: Construct
Application: PostMapRequestHandler
Application: PreAcquireRequestState
Application: AcquireRequestState
Application: PostAcquireRequestState
Application: PreRequestHandlerExecute
Page: AddParsedSubObject
Page: CreateControlCollection
Page: AddedControl
Page: AddParsedSubObject
Page: AddedControl
Page: ResolveAdapter
Page: DeterminePostBackMode
Page: PreInit
Control: ResolveAdapter
Control: Init
Control: TrackViewState
Page: Init
Page: TrackViewState
Page: InitComplete
Page: LoadPageStateFromPersistenceMedium
Control: LoadViewState
Page: EnsureChildControls
Page: CreateChildControls
Page: PreLoad
Page: Load
Control: DataBind
Control: Load
Page: EnsureChildControls
Page: LoadComplete
Page: EnsureChildControls
Page: PreRender
Control: EnsureChildControls
Control: PreRender
Page: PreRenderComplete
Page: SaveViewState
Control: SaveViewState
Page: SaveViewState
Control: SaveViewState
Page: SavePageStateToPersistenceMedium
Page: SaveStateComplete
Page: CreateHtmlTextWriter
Page: RenderControl
Page: Render
Page: RenderChildren
Control: RenderControl
Page: VerifyRenderingInServerForm
Page: CreateHtmlTextWriter
Control: Unload
Control: Dispose
Page: Unload
Page: Dispose
Application: PostRequestHandlerExecute
Application: PreReleaseRequestState
Application: ReleaseRequestState
Application: PostReleaseRequestState
Application: PreUpdateRequestCache
Application: UpdateRequestCache
Application: PostUpdateRequestCache
Application: EndRequest
Application: PreSendRequestHeaders
Application: PreSendRequestContent

Prova a spostare quel codice in un evento successivo.

Ciao
114 messaggi dal 19 marzo 2004
Grazie.

Sai dirmi dove posso trovare un pò di documentazione sugli eventi utilizzabili nel Global.asax (Eventi, parametri, etc.)?
114 messaggi dal 19 marzo 2004
Ok! Grazie!
Risolto con il seguente codice:

void Application_PreRequestHandlerExecute(Object sender, EventArgs e)
{
String selectedLanguage = Profile.Language;
System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture(selectedLanguage);
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(selectedLanguage);
}


DOMANDA: Come faccio, nello stesso evento o in un altro, ad accedere alla pagina richiesta per settare il tema?
3.121 messaggi dal 29 ottobre 2001
Contributi | Blog
sfelaco2005 <sfelaco2005> ha scritto:
Ok! Grazie!
Risolto con il seguente codice:

void Application_PreRequestHandlerExecute(Object sender, EventArgs e) {
String selectedLanguage = Profile.Language;
System.Threading.Thread.CurrentThread.CurrentCulture =
System.Globalization.CultureInfo.CreateSpecificCulture(selectedLanguage); System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(selectedLanguage);
}

DOMANDA: Come faccio, nello stesso evento o in un altro, ad accedere alla pagina richiesta per settare il tema?

Essendo il tema riferito alla singola pagina non credo sia possibile con gli eventi application (felice di essere smentito).

L'ideale è creare una tua classe Page che derivi dalla principale. Quindi, in tutte le pagine, invece di usare la classe Page usi la tua classe personalizzata in cui imposterai il theme di tua scelta.

Non ho mai provato e non posso suggerirti oltre...

Ciao
29 messaggi dal 26 luglio 2005
Hello tribu!

Il suggerimento di Andrea è anche la strada che ho seguito io.
Oltre a settare impostazioni com il Theme della pagina è possibile sfruttarla per molte altre cose che possono essere centralizzate.
Sempre meglio modificare un file piuttosto che 100 pagine, no!?

La mia classe base:
public class PageBase : System.Web.UI.Page
{
    protected override void OnPreInit(EventArgs e)
    {
      base.OnPreInit(e);

      //Imposto il tema
      this.Theme = "NomeMioSkin";
    }
}


Una mia pagina Default:
 
public partial class Default : PageBase
{
  ...
}


Spero di esser stato di aiuto.

Memole.

---------------
Enjoy your mind

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.