-1

我收到这个错误。

传入字典的模型项的类型为“System.Data.Entity.Infrastructure.DbQuery 1[<>f__AnonymousType13[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>

每当数据从控制器传递到视图时,就会发生错误。

我还需要来自所有三个表博客、图像和个人资料的数据

4

3 回答 3

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);
}
于 2012-08-01T18:09:13.680 回答
2

您正在使用投影来创建匿名类型。您的视图需要一个 IEnumerable。尝试选择新博客 { }

于 2012-08-01T18:09:21.940 回答
1

您的视图需要 ACapture.Models.Blog 的 IEnumerable。但是,您的查询和联接将返回一个新的 {Blog, Image, Profile}。就像您在 SQL 中进行连接并且不指定列时一样,您会将它们全部取回。这将创建一个匿名类型。您只想为博客选择{r}

于 2012-08-01T18:14:26.310 回答