1

对不起,因为我确信有一种方法可以使用 viewModel 来做到这一点,但是我对此非常缺乏经验,甚至不知道我是否正确地做到了。

我想要做的是传递多个博客以及将每个博客发布到视图的用户的个人资料信息。

我收到以下错误。

传入字典的模型项的类型为“ACapture.Models.ViewModels.BlogViewModel”,但该字典需要类型为“System.Collections.Generic.IEnumerable`1[ACapture.Models.ViewModels.BlogViewModel]”的模型项。

我正在尝试将以下查询结果传递给视图。

        var results = (from r in db.Blog.AsEnumerable()
                       join a in db.Profile on r.AccountID equals a.AccountID
                       select new { r, a });

        return View(new BlogViewModel(results.ToList()));
    }

这是我的视图模型

public class BlogViewModel
{
    private object p;

    public BlogViewModel(object p)
    {
        this.p = p;
    }
}

而我的看法

@model IEnumerable<ACapture.Models.ViewModels.BlogViewModel>
@{
    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)
                            {

                                <tr><td></td><td>@comment.Commentation</td></tr>
                            }
                        </table>
                </div>                
            }
</div>

提前致谢。

4

2 回答 2

2

我想你需要稍微改变你的视图模型:

public class BlogViewModel
{
    public Blog Blog { get; set; }
    public Profile Profile{ get; set; }
}

然后按如下方式返回:

    var results = (from r in db.Blog.AsEnumerable()
                   join a in db.Profile on r.AccountID equals a.AccountID
                   select new new BlogViewModel { Blog = r, Profile = a });

    return View(results.ToList());

然后在foreach视图内部的循环中,您将获得一个包含 - 个人资料和博客信息的对象,因此您可以像 fe 一样使用它@item.Profile.Username

于 2012-08-02T17:39:08.207 回答
0

在这种情况下,我不完全确定您要使用 ViewModel 完成什么,但您似乎希望该页面代表一个包含评论集合的单个博客。在这种情况下,您应该更换

IEnumerable<ACapture.Models.ViewModels.BlogViewModel>

ACapture.Models.ViewModels.BlogViewModel

然后Model表示单个 BlogViewModel,您可以使用 迭代评论Model.comments并使用Model.image.img_path.

如果不是这种情况,并且您打算每个页面有多个 BlogViewModel,那么您将必须实际构建一个 BlogViewModel 集合并将其传递给视图。

于 2012-08-02T17:53:03.127 回答