列表调用语法
Html.InfoDataList(参数1,参数2,参数3,参数4)
参数说明:
| 参数说明 | 类型 | 说明 | 是否可为null |
| 参数1 | object | 预定义条件对象参数,包含固定属性 | 否 |
| 参数2 | string | sql自定义条件 | 是 |
| 参数3 | object | sql参数值 | 是 |
| 参数4 | PageInfo | 分页对象,如需要分页,必须设置此参数 | 是 |
注:第一个参数对象中必须定义Table或ColumnId属性。
参数1常用属性:
| 属性 | 类型 | 说明 |
| Table | string | 要读取的信息表名 |
| OrderBy | string | 数据排序方式,默认Id desc排序 |
| ColumnId | int | 要读取的栏目Id,Table和ColumnId必须设置一项 |
| ColumnIds | string | 读取多个栏目id的数据,多个id用半角逗号隔开,必须设置Table属性 |
| TagId | int | 标签Id |
| ShowNumber | int | 默认为15,分页读取时此参数无效 |
| Fields | string | 要读取的字段,不设置则由系统根据后台设置自动读取 |
| HasThumbnail | int | 可选择0和1,表示信息是否包含缩略图 |
| Uid | int | 用户id |
| IsHot | byte | 信息热门级别 |
| IsGood | byte | 信息推荐级别 |
| IsTop | byte | 信息置顶级别 |
| ShowSubColumnData | byte | 是否显示副栏目数据,v4.0.11版本新增 ShowSubColumnData=1时显示副栏目信息,不设置或其他值默认不显示副栏目数据 |
实例1:读取product信息表的前10条数据,并显示副栏目数据。
<ul class="news-list">
@foreach (var item in Html.InfoDataList(new{Table="product",ShowNumber=10,ShowSubColumnData=1}))
{
string url = Html.InfoDataUrl((object)item,false);//获取内容页地址
//4.0.11版本新增加方法,第2个参数可选参数,表示url地址是否带上域名前缀。
//4.0.11之前版本只能用Html.InfoDataUrl((int)item.ColumnId,(int)item.Id)获取内容页地址
string title=item.Title; //读取标题字段,注意字段第一个字符要大写,也可以直接在html中写@(item.Title)
<li>
<span class="title"><a href="@url" target="_blank"><i class="fa fa-angle-right"></i>@(title)</a></span>
<span class="date">@item.Thedate.ToString("MM-dd")</span>
</li>
}
</ul>实例2:读取栏目Id(ColumnId)等于10的信息表的前10条数据
<ul class="news-list">
@foreach (var item in Html.InfoDataList(new {ColumnId =10,ShowNumber=5 }))
{
string url=Html.InfoDataUrl((int)item.ColumnId,(int)item.Id);
<li>
<span class="title"><a href="@url" target="_blank"><i class="fa fa-angle-right"></i>@(item.Title)</a></span>
</li>
}
</ul>实例3:给最新三天的标题添加颜色等样式
<style type="text/css">
.latest-news{color:#ff0000;} /*附加的标题样式,图标等样式自行添加,实际项目建议写到css文件中*/
</style>
<ul class="news-list">
@foreach (var item in Html.InfoDataList(new {Table="news",ShowNumber=10,OrderBy="thedate desc" }))
{
var className=""; //需要附加的样式
string url=Html.InfoDataUrl((int)item.ColumnId, (int)item.Id);
var thetime=item.Thedate; //获取信息发布日期
var nowDate=DateTime.Now; //获取当前时间
TimeSpan timeSpan=nowDate-thetime; //时间运算
var days=timeSpan.Days; //相隔天数
if (days<= 3)
{
className="latest-news"; //最新三天内的信息,单独添加一个样式。
}
<li class="title @className"><a href="@url">@item.Title</a></li>
}
</ul>实例4:通过分页方式读取数据。
@{
//获取当前页面页码,栏目页模板通过预设变量ViewBag.CurrentPage获取。
//自定义页面或内容页模板只能自行构造参数获取,如:int currentPage = StringHelper.Format<int>(Request.QueryString["page"]);
int currentPage = (int)ViewBag.CurrentPage;
PageInfo pageInfo = new PageInfo()
{
PageSize=10,//每页显示数
CurrentPage=currentPage //当前页码
};
int columnId=Html.CurrentColumnId(); //获取当前栏目id,系统预设
}
<ul>
@foreach (var item in Html.InfoDataList(new {ColumnId=columnId,OrderBy="thedate desc"},null,null,pageInfo))
{
string url=Html.InfoDataUrl((int)item.ColumnId,(int)item.Id);
<li>
<span><a href="@url" target="_blank">@item.Title</a></span>
<span>@item.Thedate.ToString("yyyy-MM-dd")</span>
</li>
}
</ul>实例5:搜索News表中标题包含"中国"的并且包含缩略图的分页数据,每页显示10条数据。
<ul class="image-list">
@{
PageInfo pageInfo=new PageInfo()
{
PageSize=10,
CurrentPage=(int)ViewBag.CurrentPage
};
foreach (var item in Html.InfoDataList(new {Table="news", HasThumbnail=1, OrderBy="thedate desc" }, "title like @keyword", new { keyword="%中国%" }, pageInfo))
{
string url=Html.InfoDataUrl((int)item.ColumnId, (int)item.Id);
<li>
<img src="@(item.Thumbnail)" alt="alt"/>
</li>
}
}
</ul>实例6:获取json数据,主要用于制作Api,可为App、小程序等第三方平台提供数据接口,Api建议结合自定义页面来使用。
@{
Layout = null; //不加载母版页框架,避免html标签污染json数据。
var responseData = Html.InfoDataList(new { Table = "news", ShowNumber = 10 }); //需要输出的对象
//输出json格式
Html.ResponseJson(responseData); //注意此方法仅在v4.0.10及后续版本支持,之前版本请自行注释
//4.0.10之前版本采用下面方式输出json格式,请自行删掉开头的注释符。
//Response.Clear();
//Response.ContentType = "application/json;charset=utf-8";
//Response.Write(JsonHelper.JsonParse(responseData)); //对象转json格式输出
//Response.Flush();
//this.Context.ApplicationInstance.CompleteRequest();
}