/ / Como acessar dados em um aplicativo MVC5 de 3 camadas usando EF6 - asp.net-mvc, entity-framework, asp.net-mvc-5

Como acessar dados em uma aplicação MVC5 de 3 camadas usando o EF6 - asp.net-mvc, entidade-estrutura, asp.net-mvc-5

Eu criei um aplicativo MVC5 de três camadas queusa EF6. Separei a aplicação em BL (camada de negócios), DL (camada de dados) e camadas de apresentação. Posso implementar BL e DL com sucesso. No entanto, não consegui recuperar dados de BL e exibi-los nas visualizações.

Aqui está o que tentei fazer:

//on the controller
public ActionResult Index()
{
TrackerBL t = new TrackerBL(); //BL
var model = t.GetApps(); //method on my BL that returns a list
return View(model);
}

e aqui está o que eu experimentei na vista

@model List<AppTracker.Models.Apps>
@{
ViewBag.Title = "Index";
}

<h2>App Tracker</h2>
@foreach(var m in Model)
{
<div>m.Name</div>
}

No entanto, ele lança a seguinte exceção:

O item de modelo passado para o dicionário é do tipo "System.Collections.Generic.List1[AppTracker.BL.AppData]", but this dictionary requires a model item of type "System.Collections.Generic.List1 [AppTracker.Models.Apps] ".

Onde eu me perdi?

Respostas:

1 para resposta № 1

Portanto, é o caso de passar o modelo errado para a visualização ou fazer referência ao modelo errado na visualização.

O item de modelo passado para o dicionário é dedigite "System.Collections.Generic.List1 [AppTracker.BL.AppData]", mas este dicionário requer um item de modelo do tipo "System.Collections.Generic.List1 [AppTracker.Models.Apps]".

A mensagem diz que você passou o seguinte para a vista

System.Collections.Generic.List1 [AppTracker.BL.AppData]

Mas a visão, conforme mostrado no código, requer

System.Collections.Generic.List1 [AppTracker.Models.Apps]

obrigado

p.s pensei em dar uma resposta oficial.


0 para resposta № 2

Você passa List<AppData> do controlador para a visualização, mas o modelo (que você deseja mostrar) na visualização é diferente (List<Apps>) Isso cria o problema.

Você só pode mostrar o modelo na vista que você passa do controlador.