我是MVC及其部分视图的新手,我创建了一个Viewmodel类:
public class CategoryBlogPost
{
public IEnumerable<Category> Category { get; set; }
public IEnumerable<Blogpost> Blogpost { get; set; }
}
在我的控制器中我创建了这个:
public ActionResult Index()
{
CategoryBlogpost model = new CategoryBlogpost
{
Blogpost = new List<Blogpost>(),
Category = new List<Category>()
};
return View(model);
}
我做了两个部分观点; _BlogpostPartial和_CategoryPartial:
_BlogpostPartial:
@model IEnumerable<Project.Models.Blogpost>
@foreach (var item in Model)
{
<h3> @Html.DisplayFor(modelItem => item.Subject)</h3>
<p> @Html.DisplayFor(modelItem => item.Detail)</p>
}
_CategoryPartial:
@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)
这将返回包含我的两个视图的页面,但不包含foreach语句的任何输出
这是因为我从未使用过我的getAllBlogposts()
,我已经制作了这个方法,但我不知道现在放在哪里。通常我只是这样说:
public ActionResult Index()
{
return View(BlogpostRepository.getAllBlogposts);
}
但正如您所见,此方法现在无法实现
答案 0 :(得分:0)
纠正你的
@model IEnumerable<Project.Models.Blogpost>
as
@model Project.Models.Blogpost
和
@model IEnumerable<Project.Models.Category>
作为
@model Project.Models.Category
答案 1 :(得分:0)
由于您希望显示Blogpost
和Category
的集合,因此您的视图模型应为
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);
}
注意我使用了多个属性名称,因此这可能会影响您的视图