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

display three random articles in a partial view mvc

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

在我的部分视图中,我所做的只是在我的列表中显示 post,但是我只想显示与类别 属性 相关的 3 个 post,但是在 randomPost 有 属性 CategoryId, Post 与类别有多对一的关系(类别可以有很多 post 但 post 只能有一个类别),我试图获得 3 个随机数 posts 按类别相关:

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 个项目:

如果您只想拥有 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 })