模板中如何實現分頁

在信息頁中調用分頁數據時,信息后面一般都需要分頁控制按鈕面板,分頁面板是一個稍顯繁瑣的功能,下面直接上代碼:

@functions{
    //默認分頁函數
    private string Pagebreak(int page, string urlPrefix, string urlParams = "")
    {
        string rv = "";
        if (page > 1)
        {
            rv = urlPrefix + page + "/";
        }
        else
        {
            rv = urlPrefix;
        }
        rv += urlParams;
        return rv;
    }
    //獲取url參數方法
    private string GetUrlParams()
    {
        string rv = "";
        System.Collections.Specialized.NameValueCollection queryStrings = Request.QueryString;
        int count = queryStrings.Count;
        if (count > 0)
        {
            rv = "?";
        }
        foreach (string key in queryStrings)
        {
            if (rv.IndexOf("=") > 0)
            {
                rv += "&";
            }
            rv += key + "=" + HttpUtility.UrlEncode(queryStrings[key]);
        }
        return rv;
    }
}
@{
    PageInfo pageInfo = (PageInfo)Model;
    int pageCount = pageInfo.PageCount;
    int pageSize = pageInfo.PageSize;
    int recordCount = pageInfo.RecordCount;
    int currentPage = pageInfo.CurrentPage;
    int m = 2; //左右兩邊顯示頁碼數
    string urlParams = GetUrlParams();
    string urlPrefix = Html.ColumnUrl();//獲取當前欄目url,如果是自定義文件,請自行修改為路徑。
}
    <div class="text-center">
        <ul class="pagination">
            @{
                if (currentPage > 1)
                {
                    <li>
                        <a href="@Pagebreak(currentPage-1,urlPrefix,urlParams)">&laquo;</a>
                    </li>
                }
                else
                {
                    <li class="disabled">
                        <a>&laquo;</a>
                    </li>
                }
                int startPage = currentPage - m;
                int lastPage = currentPage + m;
                int cha = 0;
                if (lastPage > pageCount)
                {
                    cha = lastPage - pageCount;
                    startPage = startPage - cha;
                    if (startPage < 1)
                    {
                        startPage = 1;
                    }
                    lastPage = pageCount;
                }
                else if (startPage < 1)
                {
                    cha = 1 - startPage;
                    startPage = startPage + cha;
                    lastPage = lastPage + cha;
                    if (lastPage > pageCount)
                    {
                        lastPage = pageCount;
                    }
                }
                if (startPage > 1)
                {
                    <li><a href="@Pagebreak(1,urlPrefix,urlParams)">1 ...</a></li>
                }
                for (int i = startPage; i <= lastPage; i++)
                {
                    <li@(currentPage==i?" class=active":"")><a href="@Pagebreak(i,urlPrefix,urlParams)">@i</a></li>
                }
                if (lastPage < pageCount)
                {
                    <li><a href="@Pagebreak(pageCount,urlPrefix,urlParams)">... @pageCount</a></li>
                }
                if (currentPage < pageCount)
                {
                    <li>
                        <a href="@Pagebreak(currentPage+1,urlPrefix,urlParams)">&raquo;</a>
                    </li>
                }
                else
                {
                    <li class="disabled">
                        <a>&raquo;</a>
                    </li>
                }
            }
    </ul>
</div>

把上面代碼保存為PagebreakPartial.cshtml放在模板的Views/Shared目錄下作為局部文件,這樣就可以在所有需要分頁的模板中調用,實現代碼的重用性,下面用實例演示完整的分頁模板。

@{
   //實例化一個分頁信息描述類
   PageInfo pageInfo = new PageInfo()
        {
            PageSize = 10,
            CurrentPage = ViewBag.CurrentPage //系統預設
    };
    int columnId = Html.CurrentColumnId();//獲取當前欄目id
    var dataList = Html.InfoDataList(new { ColumnId = columnId, OrderBy = "thedate desc" }, null, null, pageInfo);
}
<div class="news-list">
    @foreach (var item in dataList)
    {
        string url = Html.InfoDataUrl((int)item.ColumnId, (int)item.Id); //獲取信息內容頁url,固定語法。
        <div>
            <div class="title"><a href="@url" target="_blank">@item.Title</a></div>
            <div class="date">@item.Thedate</div>
        </div>
    }
</div>
@Html.Partial("PagebreakPartial", pageInfo)

模板制作人員可以在上面代碼基礎上完善,其中的@Html.Partial("PagebreakPartial", pageInfo)就是調用分頁局部視圖,第一個參數為文件名,第二個參數為PageInfo描述類,大家記得這種固定語法就可以了。

猛禽小队完整版-猛禽小队免费-猛禽小队在线观看