免责声明:我编辑了这个问题,因为我改变了这个过程,但它没有改变任何问题......
我正在尝试将PartialViewResult
呈现为字符串,我尝试使用此问题中的RenderRazorViewToString
方法render a view as a string ...,我从此qustion获得了提示{ {3}}
我的问题是,字符串看起来像这样:
<$A$><h1>SomeHeader</h1>
<table</$A$><$B$> class="table table-striped"</$B$><$C$>> <tbody</$C$><$D$> data-bind="template: { name: 'eventTemplate', foreach: events }"</$D$><$E$>></tbody>
</table></$E$>
而不是
<h1>SomeHeader</h1>
<table class="table table-striped">
<tbody data-bind="template: { name: 'eventTemplate', foreach: events }"></tbody>
</table>
更新:
流程如下所示:
public ActionResult Index(string item, long id)
{
var cont = SomePartialView(item, id);
return View(model: RenderRazorViewToString(cont));
}
现在View只是渲染字符串:
@Model
RenderRazorViewToString(PartialViewResult)
会返回此“残缺”字符串......
答案 0 :(得分:6)
作为调用Action的结果,也可以返回 ContentResult / Content 对象。
然后在视图中使用返回的结果。
以下是此解决方案的说明(需要RenderViewToString方法):
查看:
@Html.Action("GetHtmlAction")
PartialView(html内容的来源):
<h1>SomeHeader</h1>
<table class="table table-striped">
<tbody data-bind="template: { name: 'eventTemplate', foreach: events }">
<tr>
<td>Fake Cell</td>
</tr>
</tbody>
</table>
控制器:
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();
}
}
答案 1 :(得分:2)
这已得到微软的证实。
这是Visual Studio 2013 Preview附带的Asp.NET版本中的一个错误。 它已在Visual Studio 2013 RC中修复。
答案 2 :(得分:0)
在将字符串转换为json之前,字符串是什么样的?它有美元吗? 如果您只使用预期输出(例如
)创建一个字符串会发生什么 "<h1>SomeHeader</h1><table class=\"table table-striped\"><tbody data-bind=\"template: { name:'eventTemplate', foreach: events }\"></tbody></table>"
转换为json时是否有美元符号? 如果没有,那么视图中是否有任何可能导致美元元素的奇怪字符或行结尾。