2011-11-21 16 views
7

Mi piacerebbe utilizzare il motore Razor senza i file view (cshtml), ma sulle stringhe. voglio farlo dal di dentro MVC, ho visto esempi che utilizzanoUtilizzo del motore Razor sulle stringhe - non delle viste

new RazorViewEngine().Render 

ma non riesco a trovare il metodo Render, è qualcosa dai giorni precedenti di MVC?

Ho visto anche esempi che utilizzano Razor.Parse, ma non riesco a trovare neanche - probabilmente manca un riferimento (ma dovrebbe essere lì se sto usando MVC già, giusto?)

È consigliabile utilizzare Razor se tutto ciò che devo fare è inserire 3-4 parametri in una stringa HTML? Penso di essere un po 'infatuato di MVC in questo momento e potrebbe non pensare in modo diretto. Sto pensando di memorizzare nella cache le stringhe HTML in memoria e solo i modelli pass-in da DB.

Grazie

risposta

3

Si può dare un'occhiata a RazorEngine.

+0

Questo sembra un po 'eccessivo - Mi sembra che dovrei essere in grado di farlo senza una libreria esterna così grande - ma sembra molto bello. Tuttavia, guardando il loro [post di blog] (http://www.fidelitydesign.net/?p=473) sulla versione 3 non voglio provare la versione corrente, perché ho bisogno di eseguirlo sotto un multithread ambiente e (si spera) supporto per la memorizzazione nella cache del modello – Madd0g

+0

@ Madd0g, qual è il tuo scenario? Forse ci sono più cose adattate per soddisfare le tue esigenze. –

+0

Ho un elenco di modelli HTML con i segnaposti al loro interno, ciascuno associato a un insieme di regole, che vengono salvati in un DB. Alla fine questi modelli sarebbero applicati ai dati che soddisfano alcune condizioni (e le regole). Preferibilmente l'intero modello viene memorizzato nella cache in modo da gestire i dati rapidamente. Deve funzionare come una vista parziale, solo più "dinamicamente". – Madd0g

5

Per poter utilizzare il RazorEngine per analizzare le stringhe, è necessario il RazorEngine.dll, che può essere scaricato da http://razorengine.codeplex.com/

Per analizzare una stringa con il motore Razor basta utilizzare il seguente esempio:

var model = new { Name = "Test" }; 
var template = "Hello @Model.Name"; 

var result = Razor.Parse(template, model); 

Riguardo all'opportunità di usarlo o meno per l'analisi di una stringa, dipende molto da cosa lo si sta usando. Se pensate di aver bisogno della flessibilità offerta da Razor, lo consiglierei, ma ha un impatto sulle prestazioni paragonandolo a una sostituzione di stringa standard.

+0

Lo sto usando per gestire le viste al di fuori del progetto - Mi interessa la performance poiché mi aspetto molte (20-50?) chiama questi modelli su una singola visualizzazione di pagina - ecco perché il loro post sul blog sui cambiamenti nella nuova versione mi fa paura di provare quello vecchio, che dicono che non funziona molto bene negli ambienti multi-thread (probabilmente il web rientra in questa categoria, giusto?) – Madd0g

+0

Sì, probabilmente non è una buona idea per quello che stai cercando di ottenere. –

0

C'è un RazorParser class con Parse method che accetta TextReader come parametro di input. Tuttavia intero System.Web.Razor.Parser namespace è contrassegnato come

Questo tipo/membro supporta l'infrastruttura .NET Framework e non è destinato ad essere utilizzato direttamente dal codice.

quindi devi capirlo da solo.

Problemi correlati