6

我使用以下渲染的局部視圖爲一個字符串...渲染到字符串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(); 
     } 
    } 

但是它返回與這樣的下方奇怪代碼的HTML ...(我已經包括一個小部分作爲一個大視圖)

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

這發生在整個HTML。這部分應該看起來像這樣...

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

可能重複的[MVC4 - 如何呈現視圖的字符串?](http://stackoverflow.com/questions/17273826/mvc4-how-to-render-a-view-a-string) – SlimShaggy

回答

0

奇怪,經過清理和重建它解決了問題,一定要VS小鬼。

10

以下代碼一直對我有用。雖然我看不出任何重大差異,並且無法完全理解爲什麼你會得到你所得到的輸出。

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

嗨Tentux ,謝謝你的回答,在Clean和Rebuild之後修復了這個問題,必須是VS gremlin。 – MrBeanzy

+0

謝謝工作很好。 –