如何从视图组件 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));
}
我正在尝试将控制器逻辑移动到视图组件中 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));
}