Procedura in una sottocartella

domenica 14 ottobre 2007 - 17.22

gae58 Profilo | Senior Member

salve,

prima di consegnare una piccola procedura, la volevo testare sul mio spazio web in una sottocartella.

Ho notato però che ci sono problemi col percorso dove si trovano le masterPage.

In alcuni hread, ho letto che conviene mettere il percorso assoluto e cioè ~/masterPage.

Siccome adesso le masterPage di questo sito si trovano nella cartella ~/sottocartellaSito/masterPage, dovrei cambiare tutti i percorsi a mano per poterli far funzionare e poi ricambiarli quando passo i ifle sullo spazio web del cliente.

Qualcuno mi sa dire se c'è una soluzione per evitare ciò?

grazie
Gaetano

freeteo Profilo | Guru

ciao,
io proverei a vedere se riesci a fare tutto da web.config, lavorando con le location e mappando li dentro la masterpage associata alle varie pagine di quella sottocartella:


<location path ="~/sottocartella"> <system.web> <pages masterPageFile="~/.../MasterPage.master" /> </system.web> </location>
ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

gae58 Profilo | Senior Member

ciao ho provato il tuo consiglio e funziona.

Però siccome all'interno di questo cartela ho delle altre sottocartelle al cui interno ho delle pageMaster, ho modificato il codice che mi hai indicato, pensando funzionasse, ma non è così.

Il codice che ho aggiunto, prima del system.web è:
<location path ="~/CaCiRi">
<system.web>
<pages masterPageFile="~/CaCiRi/MPTeMeCoPiDiv.master" />
</system.web>
</location>
e funziona,.

Poi ho pensato di aggiungere un'ulteriore riga
<location path ="~/CaCiRi">
<system.web>
<pages masterPageFile="~/CaCiRi/MPTeMeCoPiDiv.master" />
<pages masterPageFile="~/CaCiRi/Ufficio/MPBaseTa.master" />
</system.web>
</location>
ma non funziona ed allora ho provato ad aggiungere un ulteriore location

<location path ="~/CaCiRi/Ufficio">
<system.web>
<pages masterPageFile="~/CaCiRi/Ufficio/MPBaseTa.master" />
</system.web>
</location>
ma non funziona.

Forse non si possono inserire due riferimenti alle masterPage?

grazie

Gaetano

freeteo Profilo | Guru

>Forse non si possono inserire due riferimenti alle masterPage?
no, perche' quello che mappi nel web.config è relativo a tutte le pagine di quella location (e nel principale senza location, pvviamente riguarda tutte le pagine del sito), e la mappatura è relativa alle "pages" appunto, quindi se vuoi usarne di diverse devi appunto lavorare con diverse directory...
ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

gae58 Profilo | Senior Member

vediamo se ho capito.
Mettiamo che il Sito è presente in una Sottocartella del Sito chiamata A. All'interno di A c'è una sottocartella chiamata B

Sia in A che in A\B c'è il webConfig

Nella cartella A inserisco:
<location path ="~/A">
<system.web>
<pages masterPageFile="~/A/masterPage.master" />
</system.web>
</location>

Nella cartella B inserisco:
<location path ="~/A/B">
<system.web>
<pages masterPageFile="~/A/B/masterPage1.master" />
</system.web>
</location>

Ciò si può fare?

grazie

Gaetano

freeteo Profilo | Guru

ciao,
effettivamente impostando quelle cose, l'applicazione fa quello che è scritto nel config, ma viene "sovrascritto" da quello che è impostato nella pagina.
Intendo dire che probabilmente tu nella pagina hai messo anche l'attributo "masterpage=.." (nella parte "aspx" diciamo), quindi quello che vince alla fine sara' quello.
Questo è ovvio perche' in fase di progettazione aggiungendo una pagina al sito, vai a dirgli gia' in quel momento quale sara' la tua masterpage.

Potresti invece pensare di usare un'ereditazione della masterpage (in vs 2008 sara' supportato a pieno).
Ti basta aggiungere una master, andare nel source in fase di design e scrivere l'attributo "masterpage" come per le pagine normali.
A questo punto ,anche se il designer ti da qualche problemino, a runtime sicuramente la cosa funziona, e puoi pensare di incastrare varie master page nella tua applicazione. (se ti interessa ti basta cercare in rete "nested masterpage" e trovi esempi a riguardo).


Se invece vuoi proprio cambiarla totalmente allora l'unica cosa che puoi fare è scriverti il codice sul "pre_init" della pagina, dove vai a settare tu la masterpage della pagina corrente, qualcosa come:

Private Sub Page_PreInit(ByVal sender As Object, ByVal e As System.EventArgs) ... Page.MasterPageFile = "~/MasterRossa.master" ... End Sub



Il fatto che nel web.config ci sia l'impostazione secondo me potrebbe cmq creati problemi perche' nella pagina a cui sostituirai la master devi dire dove aggiungere i controlli...e la cosa si incasina abbastanza....

La cosa piu' "utile" che puoi fare è lavorare come ti ho detto con le "location" ma per cambiare il "thema" e non la masterpage...
ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

gae58 Profilo | Senior Member

grazie proverò


Gaetano

freeteo Profilo | Guru

ok, se hai bisogno siamo sempre qui.
Grazie
ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5