首页 > 解决方案 > 在异步任务后返回视图结果时解决 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));
}

谁能指出我正确的方向?

标签: c#asp.net-core

解决方案


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 视图,并且只需模型传递给视图,以便以某种方式对其进行渲染。


推荐阅读