Asp.net mvc 显示多个PartialView错误

Asp.net mvc 显示多个PartialView错误,asp.net-mvc,asp.net-mvc-4,razor,partial-views,asp.net-mvc-partialview,Asp.net Mvc,Asp.net Mvc 4,Razor,Partial Views,Asp.net Mvc Partialview,我对MVC及其局部视图非常陌生,我创建了一个Viewmodel类: public class CategoryBlogPost { public IEnumerable<Category> Category { get; set; } public IEnumerable<Blogpost> Blogpost { get; set; } } 但是正如您所看到的,这种方法现在不可能了只要纠正您的错误就行了 @model IEnumerable 作为 @m

我对MVC及其局部视图非常陌生,我创建了一个Viewmodel类:

 public class CategoryBlogPost
{
    public IEnumerable<Category> Category { get; set; }
    public IEnumerable<Blogpost> Blogpost { get; set; }
}
但是正如您所看到的,这种方法现在不可能了

只要纠正您的错误就行了

@model IEnumerable

作为

@model Project.Models.Blogpost

@model IEnumerable

作为


@model Project.Models.Category

由于您希望显示
博客帖子
类别
的集合,因此您的视图模型应该是

public class CategoryBlogPost
{
  public IEnumerable<Blogpost> Blogposts { get; set; }
  public IEnumerable<Category> Categories { get; set; }
}

注意:我使用了复数属性名,因此这可能会影响您的视图中的编译器错误消息:CS1579:foreach语句无法对“Project.Models.Blogpost”类型的变量进行操作,因为“Project.Models.Blogpost”不包含“GetEnumerator”@user3208179的公共定义……您在partialview中错误地使用了foreach循环。。您不能在模型上使用foreach。我不是在模型上使用foreach,我是在模型中的每个项目上使用foreach,当不在partialview
BlogPost
中时,它通常是一个对象,而不是集合。您是想显示
BlogPost
的集合,还是
BlogPost
有一个属性是集合,并且您想显示它?@StephenMuecke我想显示一个BlogPost集合,其中主题和其他详细信息在我的BlogPost.cs类中我已经有一个getAllBlogpost()方法,但我不知道如何在局部视图中使用它,它很容易以Blogpost作为模型在常规视图中显示它们,对于
Category
您的模型
CategoryBlogPost
也是如此,并且具有属性
Blogpost Blogpost{get;set;}
。它应该是
IEnumerable BlogPosts{get;set;}
如果你想显示BlogPost的集合,谢谢你,我做了一些更改,现在就可以编译了!但是它不会加载我的博客帖子,我需要将getAllBlogposts()放在哪里?通常我把它放在
返回视图(BPRepository.getAllBlogposts())
中,但是现在它被模型填满了,正如您在我的代码中看到的,这里没有足够的空间。我将发布简短的答案,完全符合我的需要!非常感谢你!
@model IEnumerable<Project.Models.Blogpost>

   @foreach (var item in Model)
    {
              <h3> @Html.DisplayFor(modelItem => item.Subject)</h3>
              <p>  @Html.DisplayFor(modelItem => item.Detail)</p>
    }
@model IEnumerable<Project.Models.Category>

<form>
    @foreach (var item in Model)
    {
        @Html.ActionLink(item.Name, "GetBlogpostsByCat", new { id = @Html.DisplayFor(modelItem => item.ID) })
    }
</form>
@model Project.Models.CategoryBlogpost

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>
@Html.Partial("_BlogpostPartial", Model.Blogpost)


@Html.Partial("_CategoryPartial", Model.Category)
public ActionResult Index()
{
    return View(BlogpostRepository.getAllBlogposts);
}
public class CategoryBlogPost
{
  public IEnumerable<Blogpost> Blogposts { get; set; }
  public IEnumerable<Category> Categories { get; set; }
}
public ActionResult Index()
{
  CategoryBlogpost model = new CategoryBlogpost();
  // Populate collections
  model.Blogposts = BPRepository.getAllBlogposts();
  model.Categories = ....

  return View(model);
}