电话
13363039260
列表调用语法
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,false);//获取内容页地址 //4.0.11版本新增加方法,第二个参数表示如果当前数据是副栏目,是否显示主栏目url地址,第三个参数可选参数,表示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(); }