我可以返回还包含渲染视图的Json结果吗?
我需要它来返回提交的表单的新ID及其HTML和其他一些属性。
当我需要从Json对象内的一个动作返回两个(或多个)视图结果时,这也可能会有所帮助。
谢谢!
您还可以将PartialViewResult呈现为字符串,然后通过JSON将该字符串传递给视图,并使用jQuery在页面中呈现。
您可以在这篇文章中看到:http : //www.atlanticbt.com/blog/asp-net-mvc-using-ajax-json- and-partialviews/。
我创建了一个扩展程序以使其更容易:
public static class MvcHelpers { public static string RenderPartialView(this Controller controller, string viewName, object model) { if (string.IsNullOrEmpty(viewName)) viewName = controller.ControllerContext.RouteData.GetRequiredString("action"); controller.ViewData.Model = model; using (var sw = new StringWriter()) { ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(controller.ControllerContext, viewName); var viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, sw); viewResult.View.Render(viewContext, sw); return sw.GetStringBuilder().ToString(); } } }
在我的控制器中,我将其称为:
const string msg = "Item succesfully updated!"; return new JsonResult { Data = new { success = true, message = msg, view = this.RenderPartialView("ProductItemForm", model) }, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
在这种情况下,“ this”是控制器,“ ProductItemForm”是我的视图,“ model”是我的productItem对象:)
希望这可以帮助 ;)