Domanda

Si supponga di avere due progetti di applicazione Web ASP.NET separati che devono entrambi usare una MasterPage comune.

Qual è il modo migliore per condividere MasterPage tra progetti senza dover duplicare il codice?Preferibilmente senza dover ricorrere al controllo del codice sorgente o agli hack del file system.

È stato utile?

Soluzione

Ho provato a realizzare la stessa cosa.Cerco un paio di soluzioni, ma penso che l'utilizzo di una directory virtuale sia probabilmente il modo migliore per condividere le pagine master.

Ecco un paio di fonti a cui puoi guardare.

Il terzo punto verso la fine dell'articolo ti informa sui possibili modi in cui puoi condividere anche Masterpages.

Altri suggerimenti

Da K.Quello di Scott Allen Pagine master ASP.Net:Suggerimenti, trucchi e trappole articolo, su "Condivisione delle pagine master":

La prima alternativa è copiare i file di pagina master condivisi in un'unica posizione su un server Web IIS.Ogni applicazione può quindi creare una directory virtuale come sottodirectory e puntare la directory virtuale alla vera directory delle pagine master.Le applicazioni possono quindi impostare la proprietà MasterPageFile di una pagina sul nome della directory virtuale, oltre al nome del file della pagina principale.Quando rilasciamo un file di pagina master aggiornato nella directory reale, la nuova pagina master verrà visualizzata immediatamente in tutte le applicazioni.

Un secondo approccio consiste nell'utilizzare un sistema di controllo della versione per condividere un set di file di pagina master in più progetti.La maggior parte dei sistemi di controllo di controllo sorgente / controllo supporta un certo livello di funzionalità di "condivisione", in cui un file o una cartella può apparire in più di un progetto.Quando uno sviluppatore controlla un file di pagina master aggiornato, gli altri progetti vedranno immediatamente la modifica (sebbene questo comportamento sia generalmente configurabile).In produzione e test, ogni applicazione dovrebbe essere ridistribuita per la visualizzazione della pagina principale di aggiornamento.

Infine, VirtualPathProvider in ASP.NET 2.0 può servire file che non esistono sul file system.Con VirtualPathProvider, una serie di pagine principali potrebbe vivere nelle tabelle di database che tutte le applicazioni utilizzano.Per un eccellente articolo su VirutalPathProvider, vedere "Virtualizzare l'accesso ai contenuti:Servire il tuo sito Web da un file ZIP”.

Conserva una copia primaria nel controllo del codice sorgente e lascia che sia il tuo sistema di controllo del codice sorgente a occuparsene.

Supponendo che tu possa creare un repository comune per tutti i tuoi progetti (ad esempio una cartella comune nell'albero di controllo del codice sorgente), potresti aggiungere le pagine master come collegamenti utilizzando percorsi relativi.

Tuttavia, IIRC, Visual Studio crea copie locali dei file aggiunti da percorsi esterni.Potrebbe essere necessario modificare il testo del file della soluzione/progetto per aggiungere i file collegati.

Questo, ovviamente, presuppone che tu utilizzi il formato "Applicazione Web".I "Siti Web" VS precedenti non dispongono di file di progetto e si basano sulla presenza di tutti i file nella cartella del sito.

Per quanto ne so, non esiste un modo elegante per fare ciò che stai cercando..VS finirà sempre per copiarlo.

Penso che ad essere sincero potrebbe non essere una grande idea..Ovviamente vuoi condividere il codice comune più basso, ma un'intera MasterPage?..Sembra che potresti andare in cerca di guai poiché una piccola modifica potrebbe avere un tale impatto su una o più applicazioni.

Suggerirei invece di separare le parti buone di funzionalità in componenti/controlli e di distribuirli.

Non riesco a capire perché vorresti avere lo stesso markup su diversi progetti, se lo fai, non conosco un modo semplice.

Tuttavia con il codice, ovviamente puoi scrivere un file di codice da cui eredita

System.Web.UI.MasterPage

Inserisci la logica che desideri in tutte le tue pagine master.Costruiscilo come la tua fantastica DLL, quindi includilo nei tuoi progetti.

Utilizzo un legame simbolico:

Un collegamento simbolico è un oggetto del sistema file che indica un altro oggetto di file system.L'oggetto puntato è chiamato bersaglio.I collegamenti simbolici sono trasparenti per gli utenti;I collegamenti vengono visualizzati come file o directory normali e possono essere agiti dall'utente o dall'applicazione esattamente allo stesso modo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top