我的Controller类中有以下ActionResult方法,它返回帖子:
public ActionResult Feed()
{
List<Models.Post> posts = getPosts();
return PartialView(posts);
}
如何迭代这些结果(为每个帖子创建一个新的div)。
我试过@foreach (var item in Html.Action("Feed"))
,但这没效果。
以下是此问题的所有相关代码。我也停止使用帖子的模型,现在直接使用LinqToTwitter.Status
对象。
FeedController.cs
public ActionResult Index()
{
return View();
}
public ActionResult Feed()
{
return PartialView(GetStatuses());
}
private List<LinqToTwitter.Status> GetStatuses()
{
//Code to get tweets
}
Index.cshtml
@{
Layout = "~/Views/Shared/_Layout.cshtml";
ViewBag.Title = "Feed";
}
<div class="FeedPage" id="FeedPage">
<div class="FeedPosts" id="FeedPosts">
@{
Html.Action("Feed");
}
</div>
<div class="FeedAlternatives">
<div class="FeedAlternativeContent">
</div>
</div>
<div class="FeedOptions hidden">
</div>
</div>
Feed.cshtml
@model List<LinqToTwitter.Status>
<div class="FeedPosts" id="FeedPosts">
@foreach (var item in Model)
{
<div class="FeedPost SocialUpdate">
@*More divs for design*@
</div>
}
</div>
答案 0 :(得分:1)
您的代码@foreach (var item in Html.Action("Feed"))
无法按您认为的那样运作。
Html.Action("Feed")
将执行ActionResult
,它可以返回视图(HTML),JSON,文件等等...在您的情况下,它返回PartialView
,这意味着它会返回一个HTML 。
所以你如何编码呢。在您的主视图中,在您想要div的位置添加这行代码。
@Html.Action("Feed")
然后使用您当前的ActionResult
public ActionResult Feed()
{
List<Models.Post> posts = getPosts();
return PartialView(posts);
}
在项目解决方案中添加新的部分视图。此部分视图必须采用List<Post>
类型模型,然后循环它。
您的部分视图名称应为Feed
,其内容如下所示。
@model List<Model.Post>
@foreach (var post in Model){
//post will be a instance of each Post object.
<div>
<h1> post.Header</h1> // just an example
</div>
}
答案 1 :(得分:0)
您必须使用Model
。
在这种情况下,Model
将是Post
个对象的集合,您必须迭代它。
请试试这个:
@foreach (var item in Model){
}
在来自控制器的Feed
方法中,您将Post
列表传递给了PartialView
。
public ActionResult Feed()
{
List<Models.Post> posts = getPosts();
return PartialView(posts);
}
因此,在Feed.cshtml
局部视图的顶部使用此:
@model IEnumerable<Models.Post>