我在model里定义了一个
 public class pageInfo
    {
        public int pageSize { get; set; }
        public int pageCount { get; set; }
    }
controller:
 public ActionResult Index(int? p)
        {
            if (!p.HasValue) p = 1;
            pageInfo page = new pageInfo();
            page.pageSize = 3;
            page.pageCount = BookBll.PageRecodCount();
            DataTable dt = BookBll.dtPage(page.pageSize,p);
            return View(dt);
        }
在view中怎么用model时原pageSize,pageCount呢?
@Html.Pager("p",pageSize,pageCount)

解决方案 »

  1.   

    在view中怎么用model时原pageSize,pageCount呢?
    这句话怎么就看不懂。
      

  2.   

    我的意思是写
    @Html.Pager("p",Model.pageSize,Model.pageCount)
    时点.后面的不出来
      

  3.   


    MvcPager
      

  4.   

    .cshtml@foreach...
            <div style="text-align: left; border-bottom: 1px solid #808080;">
                @Html.Partial("~/Views/Shared/_NetMvc3Page.cshtml", Model)
            </div>Controllers        /// <summary>
            /// 获取展示节点列表
            /// </summary>
            /// <returns></returns>
            public ActionResult FPage(Models.MvcPage Model)
            {
                List<ModelsXX> n3list =数据源;
                //分页数据源。
                int SkinCount = (Model.CurrentPageIndex - 1) * Model.PageSize;            List<ModelsXX> datesource = n3list;//要分页的数据源
                Model.PageList = datesource.Where(r => r.ID >= 0).Skip(SkinCount).Take(Model.PageSize).ToList();            Model.TotalCount = datesource.Count;//获取记录总数
                if (Request.IsAjaxRequest())  //是AJAX请求的话返回AJAX分页数据
                {
                    Model.IsAjax = true;
                    return View(Model);
                }
                else
                {
                    Model.IsAjax = false;
                    return View(Model);
                }
            }~/Views/Shared/_NetMvc3Page.cshtml:@model NTMvc.Models.INetMvc3Page
    @if (Model.TotalPage > 0 && Model.CurrentPageIndex <= Model.TotalPage)
    {    <div id="mvcpager">
            <span style="display: none">分页控件模板</span>
            @if (Model.CurrentPageIndex > 1)
            {            
                <a  href="javascript:gotopage(1,@Model.TotalPage)" style="margin-right:10px;">首页</a>
                <a href="javascript:gotopage(@(Model.CurrentPageIndex - 1),@Model.TotalPage)" style="margin-right:10px;">
                    前页</a>    
            }
            else
            {
                <a disabled="disabled" style="margin-right: 10px;">首页</a>
                <a disabled="disabled" style="margin-right: 10px;">前页</a>
            }
            @if (Model.PageFirst > 1)
            {
                <a   href="javascript:gotopage(@(Model.PageFirst - 1),@Model.TotalPage)" style="margin-right:10px;">
                    .&nbsp;.</a>    
            }
            <script type="text/javascript">
                var totalPage = 0;
                function gotopage(pageIndex, LastPage) {
                    totalPage = LastPage;
                    document.getElementById('CurrentPageIndex').value = pageIndex;
                    document.getElementById('mvcpager_btnchk').click();
                }
                function checkInput(totalPage, isAjax) {
                    totalPage = totalPage;
                    var pageIndexStr = document.getElementById('CurrentPageIndex').value;
                    if (pageIndexStr == "") {
                        alert('请输入页码');                    document.getElementById('CurrentPageIndex').focus();
                        document.getElementById('CurrentPageIndex').select();
                        return false;
                    }
                    var pageIndex = parseInt(pageIndexStr);
                    var r = new RegExp("^\\s*(\\d+)\\s*$");
                    if (r.test(pageIndex)) {
                        if (RegExp.$1 < 1 || RegExp.$1 > totalPage) {
                            alert("页索引超出范围!");
                            document.getElementById('CurrentPageIndex').focus();
                            document.getElementById('CurrentPageIndex').select();
                            return false;
                        }
                        if (isAjax) {
                            getAjaxPageDate(pageIndex);
                            return false;
                        } else {
                            document.getElementById('mvcpager_btn').click();
                            return true;
                        }                }
                    alert("页索引不是有效的数值!");
                    document.getElementById('CurrentPageIndex').focus();
                    document.getElementById('CurrentPageIndex').select();
                    return false;
                }
            </script>
            @for (int i = 0; i < Model.DispPageCount; i++)
            {
                if ((Model.PageFirst + i) <= Model.TotalPage)
                {
                    if (Model.CurrentPageIndex == (Model.PageFirst + i))
                    {
                <a    href="javascript:gotopage(@(Model.PageFirst + i),@Model.TotalPage)" style="margin-right:10px;color:#FF0000;">@(Model.PageFirst + i)</a> 
                    }
                    else
                    {
                <a    href="javascript:gotopage(@(Model.PageFirst + i),@Model.TotalPage)" style="margin-right:10px;">@(Model.PageFirst + i)</a> 
                    }
                }
            }
            @if ((Model.PageFirst + Model.DispPageCount) <= Model.TotalPage)
            {
                <a   href="javascript:gotopage(@(Model.PageFirst + Model.DispPageCount),@Model.TotalPage)" style="margin-right:10px;">
                    .&nbsp;.</a>
            }
            @if (Model.CurrentPageIndex < Model.TotalPage)
            {
                <a href="javascript:gotopage(@(Model.CurrentPageIndex + 1),@Model.TotalPage)" style="margin-right:10px;">
                    后页</a>
                <a href="javascript:gotopage(@Model.TotalPage,@Model.TotalPage)" style="margin-right:10px;">
                    尾页</a>
            }
            else
            {
                <a disabled="disabled" style="margin-right: 10px;">后页</a>
                <a disabled="disabled" style="margin-right: 10px;">尾页</a>
            }
            <span>&nbsp;&nbsp;转到</span>
            <input type="text"  onclick="this.select()" value="@Model.CurrentPageIndex" name="CurrentPageIndex" id="CurrentPageIndex" style="width:30px;" /><span>页</span>
            <input  type="button"  value="Go" id="mvcpager_btnchk" onclick="return checkInput(@Model.TotalPage,@(Model.IsAjax == true ? 1 : 0))" />
            <input type="submit" style="display: none" value="Go" name="mvcpager" id="mvcpager_btn" />
            @* 这样写的作用是防止客户端禁用js或者js出错导致提交。*@
        </div>
    }
    class INetMvc3Page:        /// <summary>
            /// 当前页
            /// </summary>
            public int _CurrentPageIndex = 1;
            public int CurrentPageIndex
            {
                get
                {
                    return _CurrentPageIndex;
                }
                set
                {
                    _CurrentPageIndex = value;
                }
            }
            int _DispPageCount = 10;
            /// <summary>
            /// 条目显示的页数
            /// </summary>
            public int DispPageCount
            {
                get
                {
                    return _DispPageCount;
                }
                set
                {
                    _DispPageCount = value;
                }
            }        int _PageSize = 10;
            /// <summary>
            /// 每页记录数 默认20条记录一页
            /// </summary>
            public int PageSize
            {
                get
                {
                    return _PageSize;
                }
                set
                {
                    _PageSize = value;
                }
            }
            public int TotalCount { get; set; }
            /// <summary>
            /// 获取总页数
            /// </summary>
            public int TotalPage
            {
                get
                {
                    int PageCount = 0;
                    if (PageSize > 0 && TotalCount > 0)
                    {
                        PageCount = TotalCount / PageSize;
                        int Count = TotalCount % PageSize;
                        if (Count > 0)
                        {
                            PageCount = PageCount + 1;
                        }
                    }
                    return PageCount;
                }
            }
            public int PageFirst
            {
                get
                {
                    int result = 1;
                    //当前页大于要显示的页。起始页肯定不是第一页
                    if (CurrentPageIndex > _DispPageCount)
                    {
                        int num = (CurrentPageIndex % _DispPageCount);
                        if (num > 0)
                        {
                            result = ((CurrentPageIndex / _DispPageCount) * _DispPageCount) + 1;
                        }
                        else
                        {
                            result = (((CurrentPageIndex / _DispPageCount) - 1) * _DispPageCount) + 1;
                        }
                    }
                    return result;
                }        }        /// <summary>
            /// 是否Ajax分页 待以后实现
            /// </summary>
            public bool IsAjax { get; set; }class MvcPage : INetMvc3Page:        public List<ModelsXX> PageList { get; set; }
            其他页面分页在这个页面声明集合。
      

  5.   

    我的是这样的:
    pageHelper:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using System.Web.Routing;
    using System.Text;
    using System.Web.Mvc.Html;namespace Test.Models.WebPager
    {
        public static class PagerHelper
        {
            /// <summary>   
            /// 分页Pager显示  
            /// </summary>   
            /// <param name="html"></param>   
            /// <param name="currentPageStr">标识当前页码的QueryStringKey</param>  
            /// <param name="pageSize">每页显示</param>   
            /// <param name="totalCount">总数据量</param>   
            /// <returns></returns>   
            public static MvcHtmlString Pager(this HtmlHelper html, string currentPageStr, int pageSize, int totalCount)
            {
                var queryString = html.ViewContext.HttpContext.Request.QueryString;
                int currentPage = 1; //当前页  
                int.TryParse(queryString[currentPageStr], out currentPage); //与相应的QueryString绑定  
                var totalPages = Math.Max((totalCount + pageSize - 1) / pageSize, 1); //总页数  
                var dict = new RouteValueDictionary(html.ViewContext.RouteData.Values);
                var output = new StringBuilder();
                foreach (string key in queryString.Keys)
                    if (queryString[key] != null && !string.IsNullOrEmpty(key))
                        dict[key] = queryString[key];
                if (totalPages > 1)
                {
                    if (currentPage != 1)
                    {//处理首页连接  
                        dict["p"] = 1;
                        output.AppendFormat("{0} ", html.RouteLink("首页", dict));
                    }
                    if (currentPage > 1)
                    {//处理上一页的连接  
                        dict["p"] = currentPage - 1;
                        output.Append(html.RouteLink("上一页", dict));
                    }
                    else
                    {
                        output.Append("上一页");
                    }
                    output.Append(" ");
                    int currint = 5;
                    for (int i = 0; i <= 10; i++)
                    {//一共最多显示10个页码,前面5个,后面5个  
                        if ((currentPage + i - currint) >= 1 && (currentPage + i - currint) <= totalPages)
                            if (currint == i)
                            {//当前页处理  
                                output.Append(string.Format("[{0}]", currentPage));
                            }
                            else
                            {//一般页处理  
                                dict["p"] = currentPage + i - currint;
                                output.Append(html.RouteLink((currentPage + i - currint).ToString(), dict));
                            }
                        output.Append(" ");
                    }
                    if (currentPage < totalPages)
                    {//处理下一页的链接  
                        dict["p"] = currentPage + 1;
                        output.Append(html.RouteLink("下一页", dict));
                    }
                    else
                    {
                        output.Append("下一页");
                    }
                    output.Append(" ");
                    if (currentPage != totalPages)
                    {
                        dict["p"] = totalPages;
                        output.Append(html.RouteLink("末页", dict));
                    }
                    output.Append(" ");
                }
                output.AppendFormat("{0} / {1}", currentPage, totalPages);//这个统计加不加都行  
                return new MvcHtmlString(output.ToString());
            }
        }
    }controller:
     public ActionResult Index(int? p=1)
            {
                pageInfo page = new pageInfo();
                page.pageSize = 3;
                page.pageCount = BookBll.PageRecodCount();
                DataTable dt = BookBll.dtPage(page.pageSize,p);            ViewBag.size = page.pageSize;
                ViewBag.count = page.pageCount;
                return View(dt);
            }pageInfo:
      public class pageInfo
        {
               public int pageSize { get; set; }
               public int pageCount { get; set; }
        }View:
    @model System.Data.DataTable@{
        ViewBag.Title = "Index";
    }<table border="1">
    <tr>
       <th>编号</th><th>作者</th><th>书名</th><th>日期</th><th colspan="3">操作</th>
    </tr>
    @foreach (System.Data.DataRow dr in Model.Rows)
    {
        
        <tr onmouseover="this.style.backgroundColor='#ff0000'" onmouseout="this.style.backgroundColor=''" >        <td>@dr["ID"]</td>
            <td>@dr["BUser"]</td>
            <td>@dr["BName"]</td>
            <td>@dr["BDate"]</td>
            <td>@Html.ActionLink("编辑", "Edit", new { ID=dr["ID"]})</td>
            <td>@Html.ActionLink("详细", "Details", new { ID=dr["ID"]})</td>
            <td>@Html.ActionLink("删除", "Delete", new { ID=dr["ID"]})</td>
       </tr>
    }
    <tr></tr>
    </table>
    @using [email protected] / 
    @[email protected]("p", 3,11)
    这个11为记录的总条数,怎么写让一个变量把11给换掉呢
      

  6.   

    你要想办法把前台的 分页属性,在后头Controllers里可以赋值。做到这一步,可以开放参数,叫前台调用时设置。
      

  7.   

    我没有办法把数据的总数从前台给controller啊
      

  8.   

    我想通过这个取:@ViewBag.size /  
    @ViewBag.count
    提示错误:静态方法不能用动态参数。
      

  9.   

    你弄了viewbag了那就往里面填啊,还用建一个什么pageInfo类干什么
      

  10.   

    viewbag不给力,我就换了pageinfo 类