我想添加一些有趣的东西。我开发了一个只能加载一次完整视图的应用程序。从那时起,它仅使用ajax传递回服务器。它只需要加载一页(我的原因在这里并不重要)。有趣的是,我特别需要返回一些要在javascript中进行操作的数据以及要显示的局部视图。我本可以将其分为两个调用,分别调用两个单独的操作方法,但是我决定增加一些乐趣。
一探究竟:
public JsonResult MyJsonObject(string someData)
{
return Json(new { SomeData = someData, PartialView = RenderPartialViewToString("JsonPartialView", null) }, JsonRequestBehavior.AllowGet);
}
您可能会问什么RenderPartialViewToString()?这就是这里的一点点酷:
protected string RenderPartialViewToString(string viewName, object model)
{
ViewData.Model = model;
using (StringWriter sw = new StringWriter())
{
ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
ViewContext viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw);
return sw.GetStringBuilder().ToString();
}
}
我尚未对此进行任何性能测试,因此我不确定它是否会比调用JsonResult的一种操作方法和ParticalViewResult的一种操作方法产生更多或更少的开销,但我仍然认为这很酷。它只是将部分视图序列化为字符串,并将其与Json一起作为其参数之一发送。然后,我使用JQuery接受该参数并将其拍打到适当的DOM节点中:)
让我知道您对我的混合动力车的看法!