我在尝试渲染asp.net MVC 3.0应用程序时遇到此错误。 我正在使用DAB Architecture(3个项目) CAFM.Web,CAFM.Business 和 CAFM.Data 项目。
CAFM.Data包含
CAFMEntities:实体框架 ITabMaster:界面 命名空间CAFM.Data.Interfaces { 公共接口ITabMaster { TabMaster GetTabMasterById(Int64 id); IEnumerable FindTabMasterByName(字符串名称); void AddTabMaster(TabMaster tabmaster); IEnumerable GetAllTabMaster(); } }
CAFM.Business包含 CAFM.Data的参考 命名空间CAFM.Business.Repositories { 公共类TabMasterRepository:ITabMaster { public int colID {get;组; } public string FirstName {get;组; } public string LastName {get;组; }
private CAFMEntities _context;
public TabMasterRepository()
{
//IUnitOfWork unitOfWork = new CAFMEntities();
_context = new CAFMEntities();
}
public TabMasterRepository(IUnitOfWork unitOfWork)
{
if (unitOfWork == null)
throw new ArgumentNullException("unitOfWork");
_context = unitOfWork as CAFMEntities;
}
public IEnumerable<TabMaster> GetAllTabMaster()
{
//(extension)List<Movie> IEnumerable<Movie>.ToList<Movie>()
//List<TabMaster> tabmasters = _context.TabMasters.ToList();
return _context.TabMasters.ToList() ;// .AsEnumerable<TabMaster>();//.ToList();
//return tabmasters;
}
public TabMaster GetTabMasterById(Int64 id)
{
return _context.TabMasters.Where(c => c.colID == id).Single();
}
public IEnumerable<TabMaster> FindTabMasterByName(string name)
{
return _context.TabMasters.Where(c => c.LastName.StartsWith(name)).AsEnumerable<TabMaster>(); //.ToList();
}
public void AddTabMaster(TabMaster tabmaster)
{
_context.TabMasters.AddObject(tabmaster);
}
}
}
CAFM.Web包含 CAFM.Data的参考 命名空间CAFM.Web.Controllers { 公共类TabMasterController:Controller { // // GET:/ TabMaster /
public ViewResult Index()
{
//Error comes in following line. (_context.TabMasters.ToList() is successfully return all the values but error is The model item passed into the dictionary is ... during rendering HTML
TabMasterRepository tr = new TabMasterRepository();
return View(tr.GetAllTabMaster());
}
}
}
Index.cshtml包含
@model IEnumerable @ { Layout = null; } TabMaster
@ Html.ActionLink(“创建新”,“创建”)
ID 名字 姓 @foreach(模型中的var项) { @ Html.DisplayFor(modelItem =&gt; item.colID) @ Html.DisplayFor(modelItem =&gt; item.FirstName) @ Html.DisplayFor(modelItem =&gt; item.LastName) }
错误说明:
传递到字典中的模型项的类型为'System.Collections.Generic.List 1[CAFM.Data.TabMaster]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable
1 [CAFM.Business.Repositories.TabMasterRepository]'。
请提供宝贵的建议以解决上述错误。
您的回答将不胜感激! 谢谢, Imdadhusen
答案 0 :(得分:0)
我不明白您为什么要在视图中使用您的存储库。您是否尝试将模型更改为
@model List<CAFM.Data.TabMaster>
在MVC中,您应该通过ViewModels
在控制器和视图之间传递数据