ASP.NET MVC 3.0 Razor, View View de n’importe quel endroit?

Est-il vrai qu'il est possible de charger la Vue à partir de n'importe où, sans
la mise en œuvre de la coutume VirtualPathProvider MVC 3.0?

Si c'est vrai, comment le faire?

Fondamentalement, il n'est pas un problème pour mettre en œuvre personnalisée VirtualPathProvider qui serait de charger la
Vue à partir de n'importe où, mais mon travail de mise en œuvre que dans MVC 2.0 et ne fonctionne pas avec MVC 3.0, avance une raison quelconque méthode GetFile plus récent appelé pour n'existait pas vues MVC 3.0 et dans ce cas, je suis "Server Error in '/' Application."

J'ai suivi le même code pour mon custom VirtualPathProvider à partir d'ici: http://buildstarted.com/2010/09/28/mvc-3-razor-view-engine-without-a-controller/

Mise à JOUR de 1

OK je n'ai régler mon problème avec mon custom VirtualPathProvider après que j'ai mis l'enregistrement de mon personnalisée VirtualPathProvider fournisseur de première ligne dans le Application_Start()

    protected void Application_Start()
    {
        //Should be first line before routes and areas registration.
        HostingEnvironment.RegisterVirtualPathProvider(new MyVirtualPathProvider());

        AreaRegistration.RegisterAllAreas();

        RegisterGlobalFilters(GlobalFilters.Filters);
        RegisterRoutes(RouteTable.Routes);
    }

Lors de l'enregistrement de la coutume VirtualPathProvider dans Global.asax.cs suivantes après AreaRegistration.RegisterAllAreas(); ou RegisterRoutes(RouteTable.Routes); méthode override VirtualFile GetFile(string virtualPath) l'habitude de travailler pour "Vue virtuelle".

Mise à JOUR 2

signifie que les classes RazorView et RazorViewEngineRender est la réponse?

Mise à JOUR 3

Si j'ai représentation de chaîne de mon rasoir point de vue qui n'existe pas dans le système de fichiers (. e.g-je stocker rasoir vues dans la base de données) comment puis-je rendre l'utilisation de ce type d'approche http://buildstarted.com/2010/09/28/mvc-3-razor-view-engine-without-a-controller/

Par exemple de représentation sous forme de chaîne de mon point de Vue, ressemble à ceci:

"@{
    ViewBag.Title = ""About Us"";
}

<h2>About</h2>
<p>
     Put content here.
</p>"

Mise à JOUR 4

Maintenant, je vois, pour être en mesure d'utiliser @Html.<something> personnalisé TemplateBase devraient être mises en œuvre.
L'exemple de la mise en œuvre de HtmlTemplateBase<T> pourrait être retrouvée ici http://www.fidelitydesign.net/?p=239, mais il ne fonctionne pas avec RazorEngine v2, je suis à atteindre le modèle compilé, puis, après l'assemblée chargée de la méthode public override void Execute() ne sera pas exécutée j'obtiens une erreur: La méthode ou l'opération n'est pas mis en œuvre (stacktrace: http://tinypic.com/r/dcow4/7)

Pour le rendre “public override T Modèle” qui s'est passé, j'ai fait changer déclaration de “public TModel Modèle” à “public virtuel TModel Modèle” dans “public abstract class TemplateBase : TemplateBase, ITemplate”. Peut-être il y a quelques un autre changement devrait être fait? Ou quelque chose dans HtmlTemplateBase<T> devrait être fait d'une autre façon?

source d'informationauteur