使用实体框架数据不匹配
使用 Visual Studio 2010 Express 用 C# 编写的控制器的代码示例
public ActionResult Index()
{
var _user = Membership.GetUser().ProviderUserKey.ToString();
var profiles = from p in db.Profiles
where p.UserId == _user
select new
{
ProfileId = p.ID
};
return View(profiles.ToList());
}
- 来自视图的代码 -
@model List<MyProject.Models.Profile>
@{
ViewBag.Title = "Index";
}
我不断收到此错误 -
传递到字典中的模型项的类型为 'System.Collections.Generic.List1[<> ;f__AnonymousType1
1[System.Int32]]',但此字典需要类型为“System.Collections.Generic.List`1[MyProject.Models.Profile]”的模型项。
我做错了什么?
Code sample for controller written in c# using visual studio 2010 express-
public ActionResult Index()
{
var _user = Membership.GetUser().ProviderUserKey.ToString();
var profiles = from p in db.Profiles
where p.UserId == _user
select new
{
ProfileId = p.ID
};
return View(profiles.ToList());
}
Code from view -
@model List<MyProject.Models.Profile>
@{
ViewBag.Title = "Index";
}
and I continualyl get this error -
The model item passed into the dictionary is of type 'System.Collections.Generic.List1[<>f__AnonymousType1
1[System.Int32]]', but this dictionary requires a model item of type 'System.Collections.Generic.List`1[MyProject.Models.Profile]'.
What am I doing wrong?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您应该必须
满足您的视图对模型的要求。
You should have
to meet your view's requirement for model.
您正在投影到一个匿名对象,就像编译器消息所说的那样。如果您确实想要 Profile 对象的列表,则应该将 linq 查询中的 select 子句替换为简单的
即,假设 db.Profiles 包含您的模型对象(类型为 Model.Profile)
You are projecting to an anonymous object, just like the compiler message says. If you actually want a list of Profile objects, you should replace the select clause in your linq query with simply
That is, assuming that db.Profiles contains your model object (of type Model.Profile)