如何使用EF6访问3层MVC5应用程序中的数据

时间:2015-05-24 11:09:47

标签: asp.net-mvc entity-framework asp.net-mvc-5

我创建了使用EF6的MVC5三层应用程序。我已将应用程序分为BL(业务层),DL(数据层)和表示层。我可以成功实现BL和DL。但是,我无法从BL检索数据并将其显示在视图上。

这是我试图做的事情:

//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);
}

这是我在视图上尝试的内容

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

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

但是,它会抛出以下异常:

  

传入字典的模型项的类型是&#39; System.Collections.Generic.List 1[AppTracker.BL.AppData]', but this dictionary requires a model item of type 'System.Collections.Generic.List 1 [AppTracker.Models.Apps]&#39;。

我在哪里迷路了?

2 个答案:

答案 0 :(得分:1)

所以它是将错误的模型传递给视图或在视图中引用错误模型的情况。

  

传递到字典中的模型项的类型为'System.Collections.Generic.List1 [AppTracker.BL.AppData]',但此字典需要类型为'System.Collections.Generic.List1 [AppTracker]的模型项。 Models.Apps]”。

消息说您已将下面的内容传递给视图

  

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

但是,视图中显示的视图需要

  

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

由于

p.s我想给它一个正式答案。

答案 1 :(得分:0)

您将List<AppData>从Controller传递给View,但视图中的模型(您想要显示)是不同的(List<Apps>)。这就产生了问题。

您只能在视图中显示您从控制器传递的模型。