MVC将PartialViewResult渲染为字符串

免责声明:我编辑了这个问题,因为我改变了这个过程,但它没有改变任何问题……

我试图将PartialViewResult渲染为字符串,我试图使用此问题的RenderRazorViewToString方法将视图渲染为字符串 …,我从此qustion mvc返回局部视图的提示作为json

我的问题是,字符串看起来像这样:

 

SomeHeader

<table class="table table-striped"> <tbody data-bind="template: { name: 'eventTemplate', foreach: events }">

而不是这个

 

SomeHeader

更新:
该过程如下所示:

 public ActionResult Index(string item, long id) { var cont = SomePartialView(item, id); return View(model: RenderRazorViewToString(cont)); } 

现在View只是渲染字符串,如下所示:

 @Model 

RenderRazorViewToString(PartialViewResult)返回这个“残缺”的字符串……

作为调用的Action的结果,还可以返回ContentResult / Content对象。

然后在View中使用返回的结果。

以下是此解决方案的说明(需要RenderViewToString方法):

视图:

 @Html.Action("GetHtmlAction") 

PartialView(html内容的来源):

 

SomeHeader

Fake Cell

控制器:

 public ActionResult GetHtmlAction() { string htmlContent = RenderRazorViewToString("FakePartialView", null); return Content(htmlContent); } public string RenderRazorViewToString(string viewName, object model) { ViewData.Model = model; using (var sw = new StringWriter()) { var viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName); var viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw); viewResult.View.Render(viewContext, sw); viewResult.ViewEngine.ReleaseView(ControllerContext, viewResult.View); return sw.GetStringBuilder().ToString(); } } 

这已得到微软的证实。

这是Visual Studio 2013 Preview附带的Asp.NET版本中的一个错误。 它已在Visual Studio 2013 RC中修复。

在将它转换为json之前,字符串是什么样的? 它有美元吗? 如果您只使用预期输出创建一个字符串会发生什么

"

SomeHeader

"

转换为json时是否有美元符号? 如果没有,那么视图中是否有任何可能导致美元元素的奇怪字符或行结尾。