1

嗨,这是我将模型的 Ilist 转换为 ViewModel 方法的 Ilist

public static IList<PostViewModel> ConvertToPostViewModelList(this IList<Post> posts)
        {
            return posts.Select(ConvertToPostViewModel).ToList();
        }

这也是 ConvertToPostViewModel

 public static PostViewModel ConvertToPostViewModel(this Post post)
        {
            var blogPostViewModel = new PostViewModel
                {
                    Id = post.Id,
                    Body = post.Body,
                    Summary = post.Summary,
                    Title = post.Title,
                    Category = post.Category,
                    CreationDate = post.CreationDate,
                    SelectedCategory = post.CategoryId,
                    SelectedTag = post.TagId,
                    Tag = post.Tag,
                    UrlSlug = post.UrlSlug

                };

            return blogPostViewModel;
        }

这是什么问题,我得到这个错误视图:

The model item passed into the dictionary is of type 'System.Collections.Generic.List`1[Blog.Domain.Model.Post]', but this dictionary requires a model item of type 'System.Collections.Generic.IList`1[Blog.Web.UI.ViewModels.PostViewModel]'.

然后 ??我通过以下方式将模型的 Ilist 转换为 ViewModel:

return posts.Select(ConvertToPostViewModel).ToList();

那是怎么回事?

我在行动中所做的

 public ActionResult  Posts()
        {
            var blogPost = _blogRepository.GetAllPost();
            var blogPostViewModel = blogPost.ConvertToPostViewModelList();
            return View("Posts", blogPostViewModel);
        }

并在视图中

@model IList<Blog.Web.UI.ViewModels.PostViewModel>
4

1 回答 1

0

两种可能:

  1. 您发布的方法不是匹配的方法。您可以通过在控制器操作中抛出异常并查看它是否被抛出来轻松验证这一点。这可能是以下任一原因的结果: (a)Posts控制器动作过载,而另一个正在匹配;或者,(b) 拦截请求的自定义路由。

  2. 您最初在测试中返回了域对象,但是在更改控制器操作以将模型设置为 之后PostViewModel,您忘记了重新编译您的 MVC 项目。尝试重新编译您的解决方案,看看结果是否改变。

于 2013-05-02T19:21:31.193 回答