使用 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;}
}
在控制器中填充此模型并传入视图。
我想在我的主页上显示:所有栏目(所有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;}
}
在控制器中填充此模型并传入视图。