c# - 在异步任务后返回视图结果时解决 CS0029
问题描述
当我尝试使用从 MongoDb 收到的数据返回视图时,出现CS0029错误。
[HttpGet("{id}")]
public async Task<RecommendationModel> Get(string id)
{
return View ("RecommendationDetails", await _recommendationRepository.GetRecommendation(id));
}
当我只返回await
(见下文)时,我得到了正确的 JSON 结果。
[HttpGet("{id}")]
public async Task<RecommendationModel> Get(string id)
{
return await _recommendationRepository.GetRecommendation(id));
}
谁能指出我正确的方向?
解决方案
View()
从控制器动作返回返回的是ViewResult
一个IActionResult
. 所以你应该让你的方法返回一个Task<IActionResult>
:
public async Task<IActionResult> Get(string id)
{
var model = await _recommendationRepository.GetRecommendation(id);
return View("RecommendationDetails", model);
}
这与直接返回模型不同,后者会导致 MVC 框架直接将您的模型作为 JSON 返回。但是在这里,您想要实际调用 Razor 视图,并且只需将模型传递给视图,以便以某种方式对其进行渲染。
推荐阅读
- regex - 使用 sed 或 perl 一行行在每个 [ 和 ] 行之前添加转义反斜杠
- elasticsearch - Elasticsearch复合查询和聚合结果不同的doc_count值
- javascript - Firefox 扩展中的“导入”根路径
- sockets - 使用 io.socket 访问客户端上的服务器端变量?
- c - 为什么我的 C 程序虽然是一个简单的程序却没有被执行?
- python - 无法在 Linux 中安装 pandas
- python - 清理这个网络爬虫
- swift - SwiftUI,Xcode 12.4 在 Xcode 操场上的问题
- javascript - 不推荐使用事件层时,如何在传单 js 地图上绘制多边形?
- wikidata - 在 Wikidata 上创建具有特定类型值的声明