Ci sono due problemi qui:
- Sì, è possibile eseguire il rasoio View motore al di fuori del contesto di un dominio applicazione ASP.NET, come spiegato nel blog di Andrew: http://vibrantcode.com/blog/2010/11/16/hosting-razor-outside-of-aspnet-revised-for-mvc3-rc.html
- Tuttavia, Razor è ancora focalizzato principalmente sulla generazione di markup xml-like (ad esempio HTML) nel senso che il parser Razor utilizza la presenza di
<tags>
per determinare la transizione tra codice e markup. Probabilmente puoi usarlo per generare qualsiasi testo, ma potresti incorrere in problemi quando il tuo output non corrisponde alle ipotesi di Razor su quali siano le tue intenzioni.
Così, per esempio, mentre questo è un codice Razor valido (a causa del tag <div>
):
@if(printHello) {
<div>Hello!</div>
}
Il seguente frammento è valido (perché il Ciao è ancora trattato come codice!):
@if(printHello) {
Hello!
}
Tuttavia c'è uno speciale <text>
tag che possono essere utilizzati per forzare una transizione per i blocchi multilinea (il tag <text>
non sarà reso):
@if(printHello) {
<text>Hello!
Another line</text>
}
C'è anche una sintassi più breve per forzare una singola linea di transizione utilizzando @:
:
@if(printHello) {
@:Hello!
}
Beh, stavo pensando di usarlo per generare cose come e-mail o codice IronPython al volo generazione. Poiché questi non usano i tag, è probabilmente meglio guardare altre alternative. Grazie per la risposta. – Thomas
@Thomas Razor dovrebbe fare bene in questi scenari, dovrai aggiungere quei '' 'tag magici o usare' @: 'di tanto in tanto. Una volta che il supporto dell'editor VS è uscito per la sintassi di Razor, sarà abbastanza facile capire quando si verificano le transizioni. –
marcind