Madd0g
Madd0g

Reputation: 4001

Using Razor engine on strings - not views

I'd like to use the Razor engine without view (cshtml) files, but on strings. I want to do it from within MVC, I've seen examples that use

new RazorViewEngine().Render

but I can't find the Render method, is it something from the older days of MVC?

I've also seen examples that use Razor.Parse, but I can't find it either - probably missing a reference (but it should be there if I'm using MVC already, right?)

Is it advisable at all to use Razor if all I need to do is inject 3-4 parameters into an HTML string? I think I'm a bit infatuated with MVC right now and might not be thinking straight. I'm planning to cache the HTML strings in memory and just pass-in models from DB.

Thank you

Upvotes: 7

Views: 8668

Answers (3)

Jamil Geor
Jamil Geor

Reputation: 337

In order to use the RazorEngine to parse strings, you will need the RazorEngine.dll, which can be downloaded from http://razorengine.codeplex.com/

To parse a string with the Razor engine just use the following example:

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

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

As to whether or not it is advisable to use it for parsing a string, really depends on what you are using it for. If you think you are going to need the flexibility that Razor offers, I would recommend it, but it does come with a bit of a performance hit when comparing it to a standard string replace.

Upvotes: 5

Jakub Šturc
Jakub Šturc

Reputation: 35767

There is a RazorParser class with Parse method which takes TextReader as an input parameter. However whole System.Web.Razor.Parser namespace is marked as

This type/member supports the .NET Framework infrastructure and is not intended to be used directly from your code.

so you have to figure it out by yourself.

Upvotes: 0

Darin Dimitrov
Darin Dimitrov

Reputation: 1038710

You may take a look at RazorEngine.

Upvotes: 3

Related Questions