信息列表

# 信息列表调用 信息列表是网站最基础和常用的信息数据调用方法。包括首页数据调用和列表页的信息数据调用 字段属性可参考 [信息表结构](doc:2ym0Wqh2) ## 数据脚本 ```cs ViewBag.Info //原始数据集合 (List<Info>)ViewBag.Info //List结构的数据集合;需要使用foreach循环;具体可参考示例代码 ``` #### 示例代码 ```cs @foreach (var item in ((List<Info>)ViewBag.Info)) { ... } ``` ## 获取指定模型下的数据集合 在信息列表中如果获取此模型中的所有信息列表可直接指定ModelId的值 ```cs //此示例获取文章系统下的数据集合 //ModelId:系统模型表ID;具体ID可去后台系统设置-模型管理中查看 @foreach (var item in ((List<Info>)ViewBag.Info).Where(x => x.ModelId == 1)) { @item.Title //信息标题名称 @Url.Action("Detail", "Content", new { Id = item.InfoId }) //链接地址 } ``` ## 获取指定模型下的前几条数据集合 `Take()`表示获取集合中的前几条数据;括号内可填写任意正整数数字 ```cs //此示例获取文章系统下前5条数据 //ModelId:系统模型表ID;具体ID可去后台系统设置-模型管理中查看 //Take(5):获取前5条数据 @foreach (var item in ((List<Info>)ViewBag.Info).Where(x => x.ModelId == 1).Take(5)) { @item.Title //信息标题名称 @Url.Action("Detail", "Content", new { Id = item.InfoId }) //链接地址 } ``` ## 获取指定模型下的自定义数据集合 `Skip()`表示从第几条数据开始截取;括号内可填写任意正整数数字 `Take()`表示获取集合中的前几条数据;括号内可填写任意正整数数字 ```cs //此示例获取文章系统下的第5条数据到第15条数据 //ModelId:系统模型表ID;具体ID可去后台系统设置-模型管理中查看 //`Skip(5)`表示从第5条数据开始读取 //Take(15):获取前5条数据 @foreach (var item in ((List<Info>)ViewBag.Info).Where(x => x.ModelId == 1).Skip(5).Take(15)) { @item.Title //信息标题名称 @Url.Action("Detail", "Content", new { Id = item.InfoId }) //链接地址 } ``` > 此示例方法也可用于自定义分页功能的实现;具体方法在此不详细讲解;如用到可自行百度 ==Linq使用Take和Skip实现分页== ## 获取指定模型下的特定栏目数据集合 如果获取某一个模型中某一个栏目的信息列表该如何做呢?请看如下代码示例;我们只需要指定当前模型ID并同时指定当前的栏目ID即可: ```cs //此示例获取文章系统下栏目ID为1的前10条数据 //ModelId:系统模型表ID;具体ID可去后台系统设置-模型管理中查看 //ColumnId:栏目ID //Take(10):代码获取前几条数据 @foreach (var item in ((List<Info>)ViewBag.Info).Where(x => x.ModelId == 1 && x.ColumnId == 1).Take(10)) { @item.Title //信息标题名称 @Url.Action("Detail", "Content", new { Id = item.InfoId }) //链接地址 } ``` ## 获取特殊属性下的数据集合 `Contains()` 标识系统自带方法;该方法是判断字符串中是否有子字符串。 `Where(x => x.Fied == 1)` 中可自定义查询条件;`Fied`代码信息表数据结构中所含有的系统字段 ```cs //此示例表示筛选出特殊属性中含有E的信息列表 //AttributeArry.Contains("E") 标识筛选出推荐的文章 //AttributeArry为数组:推荐(A) 热点(B) 精彩(C) 头条(D) 滚动(E) 幻灯(F) @foreach (var item in ((List<Info>)ViewBag.Info).Where(x => x.ModelId == 1 && x.AttributeArry.Contains("E")).Take(10)) { ... } ``` ## 信息列表中的排序 `OrderByDescending` 通过给定字段进行降序排序(字段必须是int类型或者是datetime类型) `OrderBy` 通过给定字段进行升序排序(字段必须是int类型或者是datetime类型) ```cs //OrderByDescending:通过添加时间进行降序排序 @foreach (var item in ((List<Info>)ViewBag.Info).Where(x => x.ModelId == 1).OrderByDescending(x => x.AddDate)) { ... } //OrderBy:通过添加时间进行升序排序 @foreach (var item in ((List<Info>)ViewBag.Info).Where(x => x.ModelId == 1).OrderBy(x => x.AddDate)) { ... } ``` ## 多条件组合查询示例 `ModelId` 系统模型表ID;具体ID可去后台系统设置-模型管理中查看 `ColumnId` 系统栏目ID;具体ID可去后台内容-栏目管理中查看 `AttributeArry.Contains("E")` AttributeArry为数组:推荐(A) 热点(B) 精彩(C) 头条(D) 滚动(E) 幻灯(F) `OrderByDescending` 通过给定字段进行降序排序(字段必须是int类型或者是datetime类型) `Skip()`表示从第几条数据开始截取;括号内可填写任意正整数数字 `Take()`表示获取集合中的前几条数据;括号内可填写任意正整数数字 ```cs //多条件组合查询示例 @foreach (var item in ((List<Info>)ViewBag.Info).Where(x => x.ModelId == 1 && x.ColumnId == 1 && x.AttributeArry.Contains("E")).OrderByDescending(x => x.AddDate).Skip(5).Take(15)) { ... } ``` ## 演示代码 #### 读取文章系统推荐信息前10条数据 `@using Yideas.Model;`所有模版必须包含此函数 具体可参考[模版文件介绍](doc:yjXnlr3x) 信息日期格式的设置请参考[日期格式设置](doc:n7Egza90) ```html @using Yideas.Model; <!DOCTYPE html> <html> <head> <title>@ViewBag.Column.ColumnName-@Html.Config("WebSiteTitle")</title> <meta name="keywords" content="@Html.Config("WebKeyWords")" /> <meta name="description" content="@Html.Config("WebDescript")" /> </head> <body> <div class="list"> <ul class="list-item"> @foreach (var item in ((List<Info>)ViewBag.Info).Where(x => x.ModelId == 1 && x.AttributeArry.Contains("A")).Take(10)) { <li> <a href="@Url.Action("Detail", "Content", new { Id = item.InfoId })"> <img class="img" src="@Html.Image(item.DefaultPic)" /> <div class="txt">@item.Title</div> <div class="time">@item.AddDate.ToString("yyyy-MM-dd")</div> </a> </li> } </ul> </div> </body> </html> ``` #### 用分页方式读取信息表的数据 `@using Yideas.Model;`所有模版必须包含此函数 `@using Webdiyer.WebControls.Mvc;`分页模版头部必须包含此函数 具体可参考[模版文件介绍](doc:yjXnlr3x) 分页方法具体请查看[分页获取信息列表](doc:aWyACXYi) ```html @using Yideas.Model; @using Webdiyer.WebControls.Mvc; <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>@ViewBag.Column.ColumnName-@Html.Config("WebSiteTitle")</title> <meta name="keywords" content="@Html.Config("WebKeyWords")" /> <meta name="description" content="@Html.Config("WebDescript")" /> </head> <body> <section> <div class="clearfix"> <ul class="news_list"> @foreach (var item in ((PagedList<Info>)ViewBag.PagedList)) { <li class="clearfix"> <a href="@Url.Action("Detail", "Content", new { Id = item.InfoId })"> <div class="img-box" style="background-image:url(@Html.Image(item.DefaultPic))"><img src="@Html.TemplateDir()/statics/images/m.png" /></div> <div class="font-box"> <p>@item.Title</p> <span>@item.AddDate.ToString("yyyy-MM-dd")</span> </div> </a> </li> } </ul> </div> //通用分页代码 <div class="pagination"> @Html.Pager((IPagedList<Info>)ViewBag.PagedList, new PagerOptions { PageIndexParameterName = "pageIndex", FirstPageText = "首页", LastPageText = "尾页", PrevPageText = "上一页", NextPageText = "下一页", CurrentPagerItemTemplate = "<span class=\"current\">{0}</span>", DisabledPagerItemTemplate = "<span class=\"disable\">{0}</span>" }) </div> </section> </body> </html> ``` 模板制作人员可以在上面代码基础上完善