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 гремлин. – MrBeanzy

+0

Спасибо, работал отлично. –