2009-07-24 9 views
5

Sto creando una soluzione ASP.NET MVC e all'interno ho avuto 2 progetti di MVC Website.Come posso fare riferimento a una vista Master in un progetto diverso in ASP.NET MVC?

Sono interessato alla creazione di un terzo progetto chiamato "Condiviso", in cui posso fare riferimento alle viste/contenuti condivisi tra i due siti in modo da avere solo un posto per modificarli.

  • WebUI.Site1 (ASP.NET MVC Site)
  • WebUI.Site2 (ASP.NET MVC Site)
  • WebUI.Shared (recentemente creato ASP.NET MVC Site)

Come posso fare riferimento a una posizione di Masterview se si trova in un progetto diverso?

Così, di solito nella parte superiore di una vista vorrei fare riferimento a un Masterview in questo modo:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Tabbed.Master" Inherits="System.Web.Mvc.ViewPage<WebUI.ViewModels.Admin.EditProfileViewModel>" %> 

Tuttavia,

Ora, che "Tabbed.Master" non è nel progetto locale, è in un progetto diverso nella soluzione. Ho creato un riferimento al progetto ma non so come fare riferimento a Tabbed.Master da WebUI.Site1 a WebUI.Shared?

Qualcosa di simile:

<%@ Page Title="" Language="C#" MasterPageFile="WebUI.Shared.Views.Tabbed.Master" Inherits="System.Web.Mvc.ViewPage<WebUI.ViewModels.Admin.EditProfileViewModel>" %> 

non funziona.

Come posso fare riferimento all'ubicazione di cose come immagini master, file CSS, immagini in progetti del genere?

risposta

0

Si supponga che masterpage vive a WebUI.Shared Root/Views/SharedPage.Master

Prova a creare una directory virtuale sia sotto WebUI.Site1 e WebUI.Site2 punta a WebUI.Shared:

WebUI.Site1/Shared => WebUI.Shared Root 
WebUI.Site2/Shared => WebUI.Shared Root 

Dall'interno WebUI.Site1 e WebUI.Site2 utilizzare il seguente percorso per accedere al masterpage: ~/Shared/Views/SharedPage.Master

Non penso che l'IDE sarà in grado di tenere traccia del riferimento, ma è lavorare sul server

MODIFICA: WebUI.Site1 e WebUI.Site2 possono richiedere un riferimento su WebUI.Shared.

+0

Questo non funzionerà. Non puoi semplicemente indicare un aspx/ascx o SiteMaster in un altro percorso virtuale e farlo diventare parte della tua base di codice. –

+0

@ Fan Nissan - Sì, è possibile. Ho appena creato un progetto di test per verificare la mia affermazione. A IIS non interessa se una determinata pagina master si trova nello stesso progetto web della web root. Finché i riferimenti e i percorsi sono reperibili dalla radice del sito Web, IIS è felice. Ciò presuppone che si stia utilizzando IIS per configurare i siti: questa tecnica non funzionerà correttamente con il server di sviluppo ASP.NET incorporato in Visual Studio. – Brandon

0

È necessario creare un numero personalizzato ViewEngine se si desidera utilizzare un luogo diverso dalla cartella Visualizza del progetto per archiviare le proprie viste.

Dai un'occhiata a questo prototype entro il Phil Haack. Si tratta di memorizzare le viste nel database, ma dovrebbe darti un'idea su dove iniziare.

1

A causa della natura di MasterView, è necessario trovare una soluzione basata su file. Il percorso virtuale è un modo per farlo, ma a un certo punto ti troverai nei guai: come gestisci i riferimenti ai file quando usi il server web interno di Visual Studio?

E pensare al dolore che si prova quando manca questo percorso virtuale in IIS.

Visual Studio consente di collegarsi a file da altri progetti. Questi file verranno copiati in fase di compilazione:

tasto destro del mouse in Esplora soluzioni -> Aggiungi elemento esistente ... -> selezionare i file -> Aggiungi come collegamento

Personalmente, I don' t cura di questa funzionalità. Ma sembra che faccia ciò di cui hai bisogno.

Problemi correlati