9

Ho un modello di dominio semplice in un assieme esterno. Questo modello utilizza DTO per comunicare con un paio di classi di servizio. Non usa Entity Framework.Scaffolding di un modello esterno in ASP.NET MVC 5

In Visual Studio 2012 è possibile selezionare i miei DTO nella finestra di dialogo Aggiungi visualizzazione e impalcature fortemente tipizzate per loro.

Visual Studio 2012 scaffolding

Tuttavia, i DTOs non vengono visualizzati nella finestra di dialogo Aggiungi visualizzazione in Visual Studio 2013.

Visual Studio 2013 scaffolding

vista fortemente tipizzato creo il lavoro manualmente bene, in modo che il problema ISN 'Razor/MVC non può vedere o utilizzare i miei DTO. Il problema è solo con l'impalcatura.

Qualsiasi aiuto sarebbe apprezzato.

+0

Ho inventato un trucco. Ho creato una classe nella cartella Models con le stesse proprietà del mio DTO e quindi creato Views da esso. Poi sono andato in ciascuna delle viste e ho cambiato il modello al mio DTO. Ho eliminato la classe nella cartella Modelli quando avevo tutte le visualizzazioni di cui avevo bisogno. Sto ancora cercando una soluzione reale. –

+0

@Cory Si tratta di un duplicato https://stackoverflow.com/a/20480300/495455? –

+3

Dai un'occhiata a [Visual Studio 2013 Pro Aggiungi vista non mostra un modello di libreria di classi di accesso ai dati di riferimento nell'elenco a discesa Classe modello.] (Https://connect.microsoft.com/VisualStudio/feedback/details/809839/ visual-studio-2013-pro-add-view-fa-model-non-show-a-referenziato-data-access-class-biblioteca-in-the-model-class-discesa-list). La soluzione proposta consiste nell'utilizzare un riferimento al progetto. –

risposta

0

Così il DTO vive in un luogo diverso dallo spazio dei nomi del progetto o dallo spazio dei nomi .Models. Il menu a discesa ha un'affinità per richiamare le classi per visualizzazioni fortemente tipizzate da lì. Mi rendo conto che i tuoi DTO potrebbero vivere in un altro assembly e quale è stato il tuo hack, ma c'è un modo per ricompilarli nello spazio dei nomi MvcDemo.Models nell'altro assembly e dichiarare una classe parziale nello spazio dei nomi dei modelli nel progetto MVC? Potrebbe non essere la risposta ideale, e se non ti piace l'idea, cancellerò volentieri la mia risposta.

+0

Le classi parziali non possono estendersi agli assembly, anche se condividono lo stesso spazio dei nomi, quindi purtroppo non penso che funzionerà. –