我收到了这个错误。
传递到字典中的模型项的类型为'System.Data.Entity.Infrastructure.DbQuery 1[<>f__AnonymousType1
3 [ACapture.Models.Blog,ACapture.Models.Image,ACapture.Models.Profile]]' ,但是这个字典需要一个'System.Collections.Generic.IEnumerable`1 [ACapture.Models.Blog]'类型的模型项。
这是我的控制器。
public class HomeController : Controller
{
private ACaptureDB db = new ACaptureDB();
public ViewResult Index()
{
ViewBag.Message = "ArchiCapture";
var dateCheck = DateTime.Now.AddDays(-7);
var results = (from r in db.Blog
join p in db.Image on r.ImageID equals p.ImageID
//join l in db.Account on p.AccountID equals l.AccountID
join a in db.Profile on p.AccountID equals a.AccountID
//where r.dte_created >= dateCheck
select new { r, p, a });
return View(results);
}
这是我的观点。
@model IEnumerable<ACapture.Models.Blog>
@{
ViewBag.Title = "Home Page";
}
<div class="Forum">
<p>The Forum</p>
@foreach (var item in Model)
{
<div class="ForumChild">
<img src="@item.Image.img_path" alt="Not Found" />
<br />
<table>
@foreach (var comment in item.comment)
{
var db = new ACapture.Models.ACaptureDB();
var Name = from p in db.Profile
where (p.AccountID == comment.AccountID)
select new { p.FirstName, p.LastName };
<tr><td></td><td>@comment.Commentation</td></tr>
}
</table>
</div>
}
</div>
只要数据从控制器传递到视图,就会发生错误。
此外,我需要来自所有三个表博客,图片和个人资料
的数据答案 0 :(得分:2)
您将IEnumerable<anonymous type>
作为模型传递,而视图则需要IEnumerable<ACapture.Models.Blog>
。尝试
public ViewResult Index()
{
ViewBag.Message = "ArchiCapture";
var dateCheck = DateTime.Now.AddDays(-7);
var results = (from r in db.Blog
join p in db.Image on r.ImageID equals p.ImageID
//join l in db.Account on p.AccountID equals l.AccountID
join a in db.Profile on p.AccountID equals a.AccountID
//where r.dte_created >= dateCheck
select r);
return View(results);
}
答案 1 :(得分:2)
您正在使用投影来创建匿名类型。您的视图期待IEnumerable。尝试选择新的博客{}
答案 2 :(得分:1)
你的View期待一个IEnumerable的ACapture.Models.Blog。但是,您的查询和联接将返回一个新的{Blog,Image,Profile}。就像在SQL中进行连接并且不指定列一样,您可以将它们全部取回。这会创建一个匿名类型。您只想为博客选择{r}