在异步任务之后返回viewresult时解决CS0029

问题描述 投票:0回答:1

当我尝试使用从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
1个回答
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视图,你只需将模型传递给视图,以便以某种方式呈现它。

© www.soinside.com 2019 - 2024. All rights reserved.