Dynamically Produce Razor Views at Runtime?

2019-01-21 09:56发布

问题:

I am looking at building a web configurable layout engine, and would like to directly use the razor engine under the hood.

Lets say I have some information available via classes, xml, or a database - I want to convert that into native razor code at runtime (by this I mean to imply my source of defining content and structure is based on a provider model). Rather than convert an xml file or something on the fly every request I figured I might as well just write Razor, and let that view engine take care of everything.

Can I plug razor code directly into the engine from a source that is not the file system?

Will there be any gotchas if I dynamically generate .cshtml views and layouts into files at run-time [and dynamically set those views in the controller actions]?

回答1:

It is possible to do. Razor will have some more gotcha moments than classic Webforms view engine but here are some resources:

http://rebuildall.umbraworks.net/2009/11/17/ASP_NET_MVC_and_virtual_views

Using custom VirtualPathProvider to load embedded resource Partial Views

Storing ASP.Net MVC Views in the Database

ASP.NET MVC load Razor view from database

You'll be creating a custom ViewEngine that will determine where to look for the views. Views can be stored on the file system, in the database or as an embedded resources. Read up on the links I provided and it should get you going!



标签: c# asp.net razor