2010-10-04 5 views
3

J'ai créé une classe basecontroller basée sur un article de blog que j'ai trouvé renvoyer une vue partielle suite à une action de type ContentResult dans mon contrôleur. Le code qui est ici:Besoin de retourner une vue partielle partagée dans contentresult

protected string RenderPartialViewToString(string viewName, object model) 
    { 
     if (string.IsNullOrEmpty(viewName)) 
      viewName = ControllerContext.RouteData.GetRequiredString("action"); 

     ViewData.Model = model; 

     using (StringWriter sw = new StringWriter()) 
     { 
      ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName); 
      ViewContext viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw); 
      viewResult.View.Render(viewContext, sw); 

      return sw.GetStringBuilder().ToString(); 
     } 
    } 

J'utilise ce qui suit pour revenir que:

return Content(RenderPartialViewToString("LocationStaffSearch", lcps)); 

Alors maintenant je dois retourner une partie qui est une vue partagée. Je n'arrive pas à comprendre comment passer le nom afin qu'il trouve le partiel. Si je tape juste le nom, il rend une chaîne vide. Si je mets dans Share/LocationStaffSearch il retourne une erreur disant que la vue est nulle.

Répondre

2

J'ai trouvé la réponse, le problème était à un moment donné dans le passé que j'avais créé une autre vue partielle avec le même nom dans le dossier de vue du contrôleur. Il a trouvé celui-là en premier et l'a rendu. Une fois que j'ai sorti celui-là et que le partage était le seul qui existait, ça s'est bien passé.

Questions connexes