6

C'è un modo per aggiungere un nuovo Scaffold o sostituire la funzionalità Scaffolding utilizzata nel nuovo Scaffolding di Visual Studio 2013?Come aggiungere un nuovo Scaffold utilizzato nello Scaffolding di Visual Studio 2013?

L'unica documentazione che riesco a trovare su Internet è come ignorare i modelli T4 utilizzando la cartella CodeTemplates. Voglio aggiungere un nuovo Scaffold alla lista quando Aggiungi ...> Nuovo elemento Scaffold ... Sembra che in Visual Studio 2013 questo sia stato inserito in una libreria (Microsoft.AspNet.Scaffolding.Mvc.5.0.dll) e registrato nel GAC o come estensione VS.

http://weblogs.asp.net/imranbaloch/archive/2013/09/15/customizing-the-asp-net-mvc-5-web-api-2-scaffolding-templates.aspx?CommentPosted=true#commentmessage

voglio ignorare il meccanismo che richiama i modelli T4 in modo da poter creare file diversi e migliorato la funzionalità. La mia specifica esigenza è che voglio impalcare il vecchio CreateOrEdit.cshtml e una nuova vista parziale DetailsOrDelete.chtml. Mi piacerebbe anche Scaffold uno strumento che prende un file di risorse e genera il file di risorse localizzato in un'altra lingua.

+0

Il modo come è stato fatto in aggiornamento MVC3 2, come mostrato in questo video da Steve Sanderson a circa 50 'in cui cambia T4Scaffolding Attributo .Scaffolder a T4Scaffolding.ControllerScaffolder che è una sottoclasse di Scaffolder. Scaffolding - ASP.NET, NuGet, Entity Framework Code First and More http://channel9.msdn.com/Events/MIX/MIX11/FRM13?format=smooth Credo che qualunque cosa abbia fatto la classe ControllerScaffolderAttribute (come registrarla con la GUI degli strumenti MVC, forse l'implementazione di un'interfaccia selezionata dalla GUI) funzionerà in modo simile con la nuova finestra di dialogo Aggiungi controller MVC 5 in VS 2013. – Rad

+0

Steve Anderson ha anche una serie di blog che fornisce maggiori dettagli per questo processo: http: //blog.stevensanderson.com/2011/04/06/mvcscaffolding-overriding-the-t4-templates/ – Polynomial

risposta

3

In Visual Studio 2013 RTM non è supportato l'aggiunta di scaffolder completamente personalizzati. Si può fare solo le seguenti personalizzazioni:

  1. È possibile modificare o sovrascrivere i template T4 esistenti per i regolatori, aree, viste, ecc
  2. È possibile aggiungere visualizzazione personalizzata ponteggiatori che verrà visualizzato nella esistente MVC View scaffolder

Il team di Visual Studio sta lavorando per riattivare il supporto personalizzato dello scaffolder in un futuro aggiornamento di Visual Studio.

Per aggiungere una vista personalizzata scaffolder oggi:

  1. creare qualsiasi progetto ASP.NET in VS2013
  2. Aggiungere una cartella chiamata CodeTemplates
  3. Creare una sottocartella in là chiamato sia MvcView o MvcViewWithoutModel seconda se il modello di visualizzazione personalizzato è una vista fortemente tipizzata
  4. Creare un file lì sotto forma di <templatename>.<lang>.t4 dove lo <templatename> è quello che si vuole mostrare in t L'elenco a discesa di MVC View Scaffolder e <lang> è o cs o vb.

Per iniziare è possibile copiare qualsiasi scaffolder esistente dall'elenco predefinito di VS2013 e personalizzarlo. È possibile ottenere i ponteggiatori built-in da qui:

C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Microsoft\Web\Mvc\Scaffolding\Templates\MvcView 
C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Microsoft\Web\Mvc\Scaffolding\Templates\MvcViewWithoutModel 

Se si utilizza lo stesso nome di una scaffolder esistente allora avrà la precedenza sul scaffolder built-in, anche se chiamato da un altro scaffolder. Ad esempio, lo scaffolder del controller MVC utilizzerà uno scaffolder di visualizzazione sovrascritto presente nel progetto.

4/22/2014 Aggiornamento

Ora che le anteprime di Visual Studio 2013 Update 2 sono disponibili, è possibile scrivere ponteggiatori completamente personalizzati.

Dai un'occhiata a questo post sul blog che cammina attraverso il modo di scrivere uno scaffolder personalizzato: Creating a Custom Scaffolder for Visual Studio

+0

Ciao @Eilon. Prima di tutto, grazie per l'informazione. Ma hai qualche notizia su questo? Non vedo l'ora di creare una vista CreateOrEdit. –

+1

@RafaelMerlin se vuoi semplicemente aggiungere uno scaffolder di visualizzazione personalizzato che è supportato oggi. Ho appena aggiunto alcune informazioni alla mia risposta su come farlo. – Eilon

+0

Grazie per la tua risposta @Eilon. Sono stato in grado di creare un nuovo modello per una vista CreateOrEdit e mi ha aiutato molto. Stavo mirando allo Scaffolding che genera automaticamente il controller e tutte le viste. Ho provato a modificare il mio controller per rimuovere la vista Detail, ha funzionato per il controller (che non genera più il blocco Detail) ma ha finito per generare comunque la vista dettagli, quindi, penso che questa sia una risorsa 'bloccata' . A proposito: sto usando VS 2013 Express. –