Asp.net mvc 显示多个PartialView错误
我对MVC及其局部视图非常陌生,我创建了一个Viewmodel类: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
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);
}