2017-05-16 2 views
1

J'essaie de rendre un HTML à partir d'une vue sans utiliser de requête Web. J'ai besoin du HTML en tant que chaîne, en interne, je ne souhaite pas le servir.Le moteur du rasoir ne peut pas trouver la vue

Le viewEngine.FindView() renvoie un viewEnineResult qui n'affiche aucune vue. Il montre à la recherche des endroits où il semblait qu'ils ressemblent à ceci:

/Views//PDFOperationsReportView.cshtml

/Views/Shared/PDFOperationsReportView.cshtml

(Observer la double barre oblique dans la première ligne)

structure de fichier (je l'ai placé dans un code HTML parce que je ne pouvais pas gérer pour formater le texte correctement dans cet éditeur)

Project 
 
    Folder 
 
    Subfolder 
 
     CodeFile.cs 
 
    Views 
 
    PDFOperationsReportView.cshtml

Le code:

var viewName = "PDFOperationsReportView"; 
     var actionContext = GetActionContext(); 
     var viewEngineResult = _viewEngine.FindView(actionContext, viewName, false); 
     if (!viewEngineResult.Success) 
     { 
      throw new InvalidOperationException(string.Format("Couldn't find view '{0}'", viewName)); 
     } 

     var view = viewEngineResult.View; 
+0

pouvez-vous ajouter le code 'GetActionContext'? – tmg

+0

J'ai exactement le même problème en ce moment. Avez-vous déjà trouvé la solution? – Matt

Répondre

3

J'ai eu le même problème. J'ai trouvé la réponse ici: GitHub aspnet/Mvc Issue #4936

Fondamentalement, utilisez GetView au lieu de FindView, comme ceci:

var viewResult = razorViewEngine.GetView(viewName, viewName, false);