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时是否有美元符号? 如果没有,那么视图中是否有任何可能导致美元元素的奇怪字符或行结尾。