ASP.NET Core 6 MVC如何返回包含Partial View的JSON数据?
ASP.NET Core 6 MVC:将PartialView转为字符串并返回JSON
问题场景
开发ASP.NET Core 6 MVC应用时,需要控制器返回包含布尔状态和带模型的Partial View的JSON数据。直接将PartialView对象放入JSON返回的方式无法正常工作,需将PartialView渲染为字符串,但现有RenderViewAsString方法仅支持普通View,无法处理PartialView。
解决方案:修改渲染方法支持PartialView
核心是将视图查找逻辑从FindView改为FindPartialView,专门定位分部视图,修改后的实现如下:
protected string RenderPartialViewToString(string partialViewName, object model) { ViewData.Model = model; using (StringWriter sw = new StringWriter()) { // 使用FindPartialView查找分部视图 var viewResult = _viewEngine.FindPartialView(ControllerContext, partialViewName); if (viewResult.Success && viewResult.View != null) { ViewContext viewContext = new ViewContext( ControllerContext, viewResult.View, ViewData, TempData, sw, new HtmlHelperOptions() ); viewResult.View.RenderAsync(viewContext).Wait(); } return sw.GetStringBuilder().ToString(); } }
控制器调用示例
public IActionResult Search(SearchInputModel searchModel) { // 业务逻辑处理,生成视图模型 var resultViewModel = new SearchResultViewModel(); // ... 填充视图模型数据 return Json(new { success = true, partialHtml = RenderPartialViewToString("SearchResult", resultViewModel) }); }
前端jQuery处理代码
注意匹配返回的JSON字段名(示例中为partialHtml):
success: function (result) { if (result.success) { $("#dvBody").html(result.partialHtml); } }
关键说明
FindPartialView是区分普通View和PartialView的核心,它会优先查找分部视图文件(如_SearchResult.cshtml或SearchResult.cshtml)- 添加
viewResult.Success判断,避免视图查找失败时出现空渲染问题 - 方法名改为
RenderPartialViewToString更直观,也可保留原名但替换内部查找逻辑
内容的提问来源于stack exchange,提问作者Diego
相关产品推荐
相关产品推荐

