如何从View组件返回JSON?

时间:2017-10-09 06:10:48

标签: c# json asp.net-core asp.net-core-mvc asp.net-core-viewcomponent

我正在尝试将控制器逻辑移动到视图组件类中,但控制器仅返回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派生类不喜欢Json返回方法。我看到的所有示例都使用return View(*<something>*)

View组件不应该返回整个响应,所以我认为应该使用Content返回方法至少返回纯HTML。

1 个答案:

答案 0 :(得分:4)

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

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));
}