Решение CS0029 при возврате результата просмотра после асинхронной задачи - PullRequest
0 голосов
/ 17 сентября 2018

Я получаю ошибку CS0029 при попытке вернуть представление, используя данные, полученные из MongoDb.

[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 голосов
/ 17 сентября 2018

Возврат 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, и вы просто передаете модель в представление для ее визуализации каким-либо образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...