2013-01-31 9 views
7

Sto utilizzando uno strumento interno che abbiamo sviluppato per analizzare i modelli di rasoio con i modelli generati. Il fatto è che ora è necessario caricare il modello ogni volta per analizzarlo. Volevo aggiungere un edior in modo da poter visualizzare in anteprima il cshtml mentre lo scrivevo, quindi ho pensato che il modo migliore sarebbe stato quello di renderlo un'estensione per lo studio visivo.C'è un modo per aggiungere una vista designer per l'editor di rasoio cshtml?

Ho studiato il Web e mi sembra che tu possa scrivere un editor personalizzato per VS, ma poi devo scrivere l'editor stesso, che non voglio fare.

C'è un modo per utilizzare l'editor di rasoio esistente in VS2012 e aggiungere una scheda di anteprima con il mio controllo che ottiene il testo corrente dall'editor del rasoio così posso analizzarlo e mostrare l'anteprima?

Il motivo desidera utilizzare l'editor esistente è per la colorazione, intellisense, la gestione degli errori, ecc

risposta

9

Non v'è alcun supporto integrato per una vista di progettazione per Razor (CSHTML e VBHTML) file. Parte della ragione di questo è che sono un mix di codice e HTML, che va da "molto difficile" a "super impossibile" da analizzare.

Detto questo, in VS2012 è disponibile una funzione super interessante chiamata Page Inspector che può mostrare la pagina di rendering reale insieme al codice che l'ha generata (ad esempio la vista Rasoio) e le mappature tra di essi, anche se parte del contenuto proveniva da una pagina di layout o da una vista parziale.

Controlla http://msdn.microsoft.com/en-us/library/hh420390(v=VS.110).aspx e cerca la sezione "Impostazioni pagina", che include collegamenti a diversi post del blog e video che descrivono la funzione in modo approfondito.

Ecco un estratto:

Pagina Inspector è uno strumento che rende una pagina web (HTML, Web Forms, ASP.NET MVC, o pagine web) direttamente all'interno di Visual Studio. Puoi utilizzare Page Inspector per esaminare sia il codice sorgente che l'output risultante. Per le pagine ASP.NET, puoi utilizzare Page Inspector per determinare quale codice lato server ha prodotto il markup HTML che viene reso al browser. Page Inspector funziona anche quando le funzionalità di raggruppamento e minification ASP.NET predefinite sono abilitate.

+0

Se è "super impossibile" analizzare in fase di progettazione, quindi perché viene analizzato così facilmente in fase di esecuzione? Perché i segmenti di codice non possono essere sostituiti solo con valori di segnaposto statici? – Dan

+0

@Dan il parser di Razor analizza molto poco l'HTML o il C#. Si preoccupa principalmente di cercare il '@' che indica una transizione e alcuni altri punti in cui la transizione tra HTML e C# è implicita, come avere un tag HTML direttamente in un blocco C# (che non sarebbe valido C#). Aggiungete a ciò il fatto che sia C# che HTML si stanno evolvendo, il parser di Razor è scritto in modo tale che * la maggior parte * delle modifiche a una di queste lingue non influisce sul parser. Quindi forse la verità è più vicina a "molto difficile" piuttosto che "super impossibile". – Eilon

+1

È troppo male Page Inspector non esiste in VS 2015. :( – Dan