2011-12-19 9 views
9

Abbiamo una soluzione in esecuzione contiene molte applicazioni web forms con la stessa pagina master, abbiamo creato un progetto di libreria di classi per la pagina principale e i relativi controlli e lo riferimento come dll all'interno di ogni applicazione di modulo Web e assegnare programmaticamente la pagina masterutilizza la pagina master del modulo Web come pagina principale per le viste ASP.Net MVC in modo programmatico

Ora aggiungeremo due nuove applicazioni alla nostra soluzione ma abbiamo deciso di utilizzare ASP.Net MVC 3 per la creazione di queste nuove applicazioni.

Il problema è che dobbiamo utilizzare la stessa pagina master per le nuove applicazioni, quindi come possiamo impostare la pagina master per le nostre visualizzazioni utilizzando il codice?

Fare attenzione a ricordare che la nostra pagina principale è un progetto di libreria di classi.

risposta

3

Guardate questo articolo per avere una panoramica di miscelazione Webforms con MVC:

Un altro progetto interessante è Zeus quando si tratta di un Webforms misti/soluzione MVC . Contiene helper per usare HtmlHelper e UrlHelper su pagine Webform.

+0

grazie per gli ottimi post ma parla di pagina principale all'interno del progetto web non come progetto di libreria di classi (dll). –

+0

Questo post parla della condivisione di una pagina principale tra il motore ASPX e Razor Engine. Sarà lo stesso approccio per condividere una normale pagina ASP.Net con il progetto ASP.Net MVC 3.0 Razor Engine? – HaBo

+0

@HaBo: Non capisco esattamente la tua domanda. I post parlano dell'utilizzo di una pagina principale di Webforms con visualizzazioni Razor MVC ASP.NET. – Jan

1

Se si desidera realmente andare avanti la rotta MVC, è consigliabile investire un po 'di tempo per convertire la pagina principale in un layout. Tutto il resto sarebbe un trucco/soluzione alternativa.

1

Amir, ho caricato un campione funzionante a here. Passaggi,

1) Scaricata e convertita un'applicazione di esempio da here.

2) Aggiungere un'applicazione MVC 3 in questa soluzione e Aggiungere riferimento alla libreria di classi della soluzione precedente.

3) Specificare la MasterPage in visualizzazione MVC (in visualizzazione, MasterPageFile="~/MasterPageDir/MasterPage.master" o in controller return View("Index",masterName: MasterPageVirtualPathProvider.MasterPageFileLocation);).

4) Inserire queste righe in global.asax.

MasterPageVirtualPathProvider vpp = new MasterPageVirtualPathProvider(); 
HostingEnvironment.RegisterVirtualPathProvider(vpp); 
+0

+1 per la risposta, ma dipende da 'VirtualPathProvider'. sfortunatamente il nostro vecchio progetto non lo usa :(Sembra che io debba copiare la pagina master Html nella mia vista '_layout' e fare in modo che gli stili e le immagini si riferiscano alla versione di produzione (online). –