在执行异步任务后返回观看结果时解决CS0029

时间:2018-09-17 10:23:39

标签: c# asp.net-core

当我尝试使用从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));
}

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:2)

从控制器操作中返回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视图,而只是将模型传递到视图,以便以某种方式呈现它。