在局部视图mvc中显示三篇随机文章

时间:2015-04-27 15:36:36

标签: c# asp.net-mvc linq random

我有一个博客,其中一个页面是MainDetails,在这里我显示当前的博客,在这个详细信息页面中我显示partialview,在那部分我试图显示三个random类似的帖子。但是我坚持使用语法:

在我的部分视图中,我所做的只是显示列表中的帖子,但是我想只显示与Category属性相关的3个帖子,但是randomPost有属性CategoryIdPost与类别有多对一关系(类别可以有很多帖子,但帖子只能有一个类别),我想获得3个randoms帖子按类别相关:

PostController GetSimilarPosts 行动:

    public ActionResult GetSimilarPosts(int id = 0)
    {
        var randomPosts = db.Categories.Where(p => p.Id == id).SelectMany(p => p.Posts).OrderBy(r => Guid.NewGuid()).Take(3);
        return View(randomPosts.ToList());
    }

然而,我maindetails页面上针对上述操作和partialview的输出仍显示超过3项:

enter image description here

1 个答案:

答案 0 :(得分:3)

如果你只想要3篇随机文章,你可以使用类似的东西

public class HomeController : Controller
{
     private DatabaseContext db = new DatabaseContext();

     public ActionResult RandomPosts(int categoryId)
     {
          var randomPosts = db.Posts.Where(x => x.CategoryId == categoryId)
                                    .OrderBy(r => Guid.NewGuid()).Take(3);
          return View(randomPosts);
     }
}

在您的视图中,您可以使用以下

来调用它
@Html.Action("RandomPosts", "Home", new { categoryId = 1 })