6

Używam następujących renderowanie częściowego widok na ciąg ...Render częściowy widok na ciąg MVC4

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

     ViewData.Model = model; 

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

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

Jednakże zwraca HTML z dziwnych tagów takich jak ten poniżej ... (mam włączone mała sekcja jako duży widok)

<$A$><div</$A$><$B$> class="modal hide fade"</$B$><$C$> id="dialog"</$C$><$D$> 

Dzieje się to w całym kodzie HTML. Ta sekcja powinna wyglądać tak ...

<div class="modal hide fade" id="dialog" style="display: none;"> 
+0

możliwy duplikat [MVC4 - jak renderować widok ciąg?] (Http://stackoverflow.com/questions/17273826/mvc4-how-to-render-a-view-a-string) – SlimShaggy

Odpowiedz

0

Dziwne, po wyczyszczeniu i odbudowaniu naprawiono problem, musi to być Gremlin VS.

10

Poniższy kod zawsze działał dla mnie. Chociaż nie widzę większych różnic i nie mogę w pełni zrozumieć, dlaczego otrzymujesz wyniki, które otrzymujesz.

public static String RenderRazorViewToString(ControllerContext controllerContext, String viewName, Object model) 
     { 
     controllerContext.Controller.ViewData.Model = model; 

     using (var sw = new StringWriter()) 
      { 
      var ViewResult = ViewEngines.Engines.FindPartialView(controllerContext, viewName); 
      var ViewContext = new ViewContext(controllerContext, ViewResult.View, controllerContext.Controller.ViewData, controllerContext.Controller.TempData, sw); 
      ViewResult.View.Render(ViewContext, sw); 
      ViewResult.ViewEngine.ReleaseView(controllerContext, ViewResult.View); 
      return sw.GetStringBuilder().ToString(); 
      } 
     } 
+0

Witam Tentuksa , dziękuję za odpowiedź, po wyczyszczeniu i odbudowaniu go naprawiono problem, musi być gremlinem VS. – MrBeanzy

+0

Dzięki działało świetnie. –

Powiązane problemy