Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Tipos incompatíveis na View

Estou desenvolvendo a segunda funcionalidade e estou com um problema, creio que esteja no modelo que eu declarei ou talvez algo relacionado ao GetProdutos().

Estou recebendo o seguinte erro:

An unhandled exception occurred while processing the request. InvalidOperationException: The model item passed into the ViewDataDictionary is of type 'System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[System.Collections.Generic.List`1[CasaDoCodigo.Models.Produto],CasaDoCodigo.Repositories.ProdutoRepository+<GetProdutos>d__2]', but this ViewDataDictionary instance requires a model item of type 'System.Collections.Generic.List`1[CasaDoCodigo.Models.Produto]'.

Segue o StackTrace:

System.InvalidOperationException: The model item passed into the ViewDataDictionary is of type 'System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[System.Collections.Generic.List`1[CasaDoCodigo.Models.Produto],CasaDoCodigo.Repositories.ProdutoRepository+<GetProdutos>d__2]', but this ViewDataDictionary instance requires a model item of type 'System.Collections.Generic.List`1[CasaDoCodigo.Models.Produto]'. at Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary.EnsureCompatible(Object value) at Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary..ctor(ViewDataDictionary source, Object model, Type declaredModelType) at lambda_method(Closure , ViewDataDictionary ) at Microsoft.AspNetCore.Mvc.Razor.Internal.RazorPagePropertyActivator.Activate(Object page, ViewContext context) at Microsoft.AspNetCore.Mvc.Razor.RazorPageActivator.Activate(IRazorPage page, ViewContext context) at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageCoreAsync(IRazorPage page, ViewContext context) at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageAsync(IRazorPage page, ViewContext context, Boolean invokeViewStarts) at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderAsync(ViewContext context) at Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor.ExecuteAsync(ViewContext viewContext, String contentType, Nullable`1 statusCode) at Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor.ExecuteAsync(ActionContext actionContext, IView view, ViewDataDictionary viewData, ITempDataDictionary tempData, String contentType, Nullable`1 statusCode) at Microsoft.AspNetCore.Mvc.ViewResult.ExecuteResultAsync(ActionContext context) at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeResultAsync(IActionResult result) at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResultFilterAsync() at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResultExecutedContext context) at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResourceFilter() at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext context) at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeFilterPipelineAsync() at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeAsync() at Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(HttpContext httpContext) at Microsoft.AspNetCore.Session.SessionMiddleware.Invoke(HttpContext context) at Microsoft.AspNetCore.Session.SessionMiddleware.Invoke(HttpContext context) at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)

O código está no meu Github, segue o link: https://github.com/brumone/projetoFinal-Alura-ASP.NET/tree/master/Funcionalidade2/CasaDoCodigo

2 respostas
solução!

Oi Daniel, tudo bem?

Seu código atualmente está assim:

public IActionResult BuscaDeProdutos()
{
    return View(produtoRepository.GetProdutos());
}

O método GetProdutos() é assíncrono, então BuscaDeProdutos() tem que ser assíncrono também.

public async Task<IActionResult> BuscaDeProdutos()
{
    return View(await produtoRepository.GetProdutos());
}

Veja se funciona e nos avise. Obrigado!

Opa Marcelo! Tudo indica que funcionou, só tive um problema em que os livros de algumas categorias não estavam aparecendo depois de eu deixar a view assíncrona, mas bastou recriar o banco de dados.

Muito obrigado.