我正在尝试将控制器逻辑移动到视图组件类中,但控制器仅返回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。
答案 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));
}