You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 11:32:48