-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>

データがコントローラーからビューに渡されるたびにエラーが発生します。

また、Blog、Image、および Profile の 3 つのテーブルすべてのデータが必要です。

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 に答える