使用 mvc 5 从会话中获取最新记录

Get lastest record from section using mvc5

我想在我的主页上显示:所有栏目(所有link类别和该栏目中的一条最新新闻记录)。 请帮我完成我的代码。 非常感谢。

我的 DbContext class:

public partial class xxDbContext : DbContext
    {
        public xxDbContext()
            : base("name=xxDbConnection") { }
        public virtual DbSet<Category> Categories { get; set; }
        public virtual DbSet<Section> Sections { get; set; }
        public virtual DbSet<News> News { get; set; }
    }
    public partial class Section
    {  
        public int Id { get; set; }
        public string Name { get; set; }

        public virtual List<Category> Categories { get; set; }
    }
    public partial class Category
    {
        public int Id { get; set; }
        public int SectionId { get; set; }
        public string Name { get; set; }

        public virtual Section Section { get; set; }
    }
    public partial class News
    {
        public int Id { get; set; }
        public int CateId { get; set; }
        public string Title { get; set; }
        public string Content { get; set; }
    }

我的控制器

public ActionResult NewsInSec()
        {
            var model = db.Sections.Where(m => m.Publish).ToList();
            return PartialView("NewsInSec", model);
        }

我的观点

@model IEnumerable<xx.Models.Section>
<div>
    @foreach (var sect in Model)
    {
        <ol class="breadcrumb">
            <li><a href="/Section/@sect.Id">@sect.Name</a></li>

            @foreach (var cate in sect.Categories)
            {
                <li><a href="/Cate/@cate.Id">@cate.Name</a></li>
            }
        </ol>

        **foreach (var item in sect.Categories.SelectMany(c => c.News).Where(c => c.Publish).OrderByDescending(c => c.CreateDate).Take(4).ToList())
    {
        <div>
            @* News title*@
            <h4><a href="#">@item.Title</a></h4>
            <img src="~/img/news/@item.Image" />
            @*Content of lastest news*@
            <p>@item.NewsContent</p>
            <p><a href="#">@item.Title</a></p>
        </div>
    }**
    }

最后,我想把栏目、美食、新闻作为我的附件照片。 请帮我再查看并修复我的代码一次?非常感谢,非常感谢。

您可以在类别中添加导航属性,以便于访问新闻。

public partial class Category
{
    public int Id { get; set; }
    public int SectionId { get; set; }
    ...

    public virtual List<News> News { get; set; }    
}

和select 部分的最新消息:

@foreach (var cate in sect.SelectMany(s=>s.Categories.SelectMany(c=>c.News))
.OrderByDescending(n=>n.ID).Take(5))
 {
  <div>
            // Title of lastest news
            <h3></h3>
            <img src="~/img/...." />
            // Content of lastest news
            <p></p>
        </div>
}

注意:更正确的方法是在您的 Controller 中查找最新消息并将结果包含在 ViewModel 中,例如:

public class SomeViewModel
{
  public IEnumerable<Section> Sections {get;set;}
  public IEnumerable<News> LastNews{get;set;}
}

在控制器中填充此模型并传入视图。