c# - 在局部 View mvc 中显示三篇随机文章

标签 c# asp.net-mvc linq random

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

在我的部分 View 中,我所做的只是显示我列表中的帖子,但是我只想显示与类别属性相关的 3 个帖子,但随机Post有属性CategoryIdPost和Category是多对一的关系(category可以有很多post,post只能有一个category) ,我正在尝试获取 3 个按类别相关的随机帖子:

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

最佳答案

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

在您的 View 中,您可以使用以下方式调用它

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

关于c# - 在局部 View mvc 中显示三篇随机文章,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29900080/

相关文章:

c# - 没有具有键 xxxxxx 的 'IEnumerable<SelectListItem>' 类型的 ViewData 项

c# - 使用 Linq "C#"提取 DataTable 值

c# - 实体类型需要定义主键

c# - 如何将项目添加到列表

c# - 深度优先搜索的递归方法与堆栈

C# LINQ 多选

c# - 如何在 LINQ 中按列表合并分组

c# - 将字符串转换为 LinqToEntities 中的日期时间(在查询内)

c# - 将站点的手动版本号添加到 web.config

asp.net-mvc - 在 ASP.NET MVC ViewModel 类中获取数据?