如何从视图组件 return JSON?

How to return JSON from a View Component?

我正在尝试将控制器逻辑移动到视图组件中 class,但控制器仅 returns JSON,对于客户端小部件 UI 我的视图组件。这是问题所在的核心控制器代码:

public IActionResult TreeData(string dir = "")
{
    var browsingRoot = Path.Combine(_config.BaseDir, dir);
    var nodes = new List<TreeNode>();
    nodes.AddRange(RecurseDirectory(browsingRoot));
    return Json(nodes);
}

这在控制器中很好,但是 ViewComponent 派生的 class 不喜欢 Json return 方法。我看到的所有示例都使用 return View(*<something>*).

视图组件不应该 return 整个响应,所以我想它应该有一个 Content return 方法而不是 return 纯 HTML 至少。

看起来可以通过返回内容而不是视图来完成:

public IActionResult TreeData(string dir = "")
{
    var browsingRoot = Path.Combine(_config.BaseDir, dir);
    var nodes = new List<TreeNode>();
    nodes.AddRange(RecurseDirectory(browsingRoot));
    return new ContentViewComponentResult(JsonConvert.SerializeObject(nodes));
}