我创建了使用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;。
我在哪里迷路了?
答案 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>
)。这就产生了问题。
您只能在视图中显示您从控制器传递的模型。