信息表数据列表调用语法

列表调用语法

Html.InfoDataList(参数1,参数2,参数3,参数4)

参数说明:

参数说明
类型
说明是否可为null
参数1
object
预定义条件对象参数,包含固定属性
参数2string
sql自定义条件

参数3
object
sql参数值

参数4
PageInfo
分页对象,如需要分页,必须设置此参数

:第一个参数对象中必须定义Table或ColumnId属性。

参数1常用属性

属性
类型
说明
Table
string
要读取的信息表名
OrderBy
string
数据排序方式,默认Id desc排序
ColumnIdint
要读取的栏目Id,Table和ColumnId必须设置一项
ColumnIdsstring
读取多个栏目id的数据,多个id用半角逗号隔开,必须设置Table属性
TagId
int
标签Id
ShowNumberint
默认为15,分页读取时此参数无效
Fieldsstring
要读取的字段,不设置则由系统根据后台设置自动读取
HasThumbnailint
可选择0和1,表示信息是否包含缩略图
Uidint用户id
IsHot
byte
信息热门级别
IsGood
byte信息推荐级别
IsTopbyte
信息置顶级别


实例1:读取product信息表的前10条数据

<ul class="news-list">
    @foreach (var item in Html.InfoDataList(new{Table="product",ShowNumber=10}))
    {
        string url=Html.InfoDataUrl((int)item.ColumnId,(int)item.Id); //获取当前信息的url地址,系统预设
        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();
}