信息列表
# 信息列表调用
信息列表是网站最基础和常用的信息数据调用方法。包括首页数据调用和列表页的信息数据调用
字段属性可参考 [信息表结构](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>
```
模板制作人员可以在上面代码基础上完善