Salve a tutti.

Ho creato un sito con le master page e lo ho compilato con il compiler di asp.net e tutto funziona correttamente.

Quello che vorrei fare ora è estendere l'applicazione per avere delle master page dinamiche senza dover riaprire visual studio e rifare il deploy del progetto.

In poche parole vorrei dare in pasto ad un metodo una mia mater page (diciamo 3 file di testo, la pagina .master, il file cs del "codebehind" ed il file cs della classe designer) e questo metodo attraverso il CodeDom dovrebbe aggiungerla all'assembly della mia applicazione.

Avete qualche esperienza in merito?

Ciao e grazie
s.belia wrote:
Avete qualche esperienza in merito?

non credo sia necessario fare niente di particolare (come usare CodeDom) per il semplice fatto che in fin dei conti una MasterPage è nient'altro che uno user control.
dovrebbe bastarti modificare la proprietà MasterPageFile della pagina perchè funzioni, anche se hai già precompilato il sito.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
certo Daniele...il problema però è un'altro.
Ma il giochino funziona anche se la master page ha del codice nel codebehind?

Anche se la risposta è si, visto che non voglio far vedere il codice dei file cs (la web app è pubblicata su un hosting condiviso) devo compilarla in un assembly.....anche se si protrebbe vedere con un reflector....ma almeno è più impegnativo!!
s.belia wrote:
certo Daniele...il problema però è un'altro.
Ma il giochino funziona anche se la master page ha del codice nel codebehind?

certo, finchè la Master Page sa come fare riferimento (e con il code inline o il codeFile il problema non si pone nemmeno).

Anche se la risposta è si, visto che non voglio far vedere il codice dei file cs (la web app è pubblicata su un hosting condiviso) devo compilarla in un assembly.....anche se si protrebbe vedere con un reflector....ma almeno è più impegnativo!!

volendo potresti, ma poi perdi la flessibilità di inserirla al volo. se magari spieghi esattamente cosa vuoi fare (intuisco tenere la MP in un file separato, ma sempre in un assembly) allora posso cercare di darti un aiuto migliore

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
Ok,

ecco il funzionamento che vorrei ottenere:

la soluzione è formata da 1 progetto che è la mia applicazione Web, logicamente con il rispettivo assembly.

quando richiamo una pagina del progetto controllo su DB quale template devo andare a richiamare e a questo punto carico il template a runtime lo assegno alla pagina.

Il mio obbiettivo è quello di fare upload di un nuovo template (.master,.master.cs,.master.designer.cs) tramite una maschera nella parte amministrativa e compilarlo nell'assembly.

Per comodità potrei anche mettere i templati in un assembly separato così da non intaccare l'assembly dell'applicazione reale.

Spero di essere stato chiaro, altirmenti ti faccio un disegno più preciso di cosa sto realizzando
s.belia wrote:
Devo fare l'esempio più chiaro?

no, ma ogni tanto lavoro anche e quindi mi capita di non rispondere subito

Il mio obbiettivo è quello di fare upload di un nuovo template (.master,.master.cs,.master.designer.cs) tramite una maschera nella parte amministrativa e compilarlo nell'assembly.

hai già considerato, nell'ordine:
- VirtualPathProvider
- BuildProvider custom
?
in particolare, con il primo puoi tenere una classe su db e compilarla quando ti pare. non so quanto sia facile integrarlo con il precompile, però tendenzialmente credo non sia così difficile.
li trovi entrambi menzionati anche nell'ultimo webcast di Cristian http://podcasts.aspitalia.com/CommunityDays/ASP302-ASP.NET-HttpRuntime.podcast

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP

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.