コード例 #1
0
ファイル: Pager.cs プロジェクト: pathrough/Flh
        /// <summary>
        /// 分页控件
        /// </summary>
        /// <param name="helper"></param>
        /// <param name="index">当前页</param>
        /// <param name="count">总页数</param>
        /// <param name="provider">地址生成器</param>
        /// <param name="showCount">显示页码数量</param>
        /// <param name="isShowHomeAndLast">是否显示首页和末页</param>
        /// <param name="isShowPrevAndNext">是否显示上一页和下一页</param>
        /// <param name="isHomeAndLastInside">首页和末页是否显示在上一页和下一页的内侧</param>
        /// <param name="isShowInput">是否显示转跳输入框</param>
        /// <param name="isUseDefaultSubmitScript">是否使用默认转跳js</param>
        /// <param name="isWithQueryString">是否包含QueryString字符串</param>
        /// <param name="isUrlEncode">传递的参数是否需要编码</param>
        /// <param name="interval">中间的间隔内容模板;{0}:Class</param>
        /// <param name="itemTemplate">分页模板;{0}:页码,{1}:地址,{2}:Class</param>
        /// <param name="indexTemplate">当前页码模板;{0}:页码,{1}:Class</param>
        /// <param name="parentTemplate">父级模板;{0}:分页html代码</param>
        /// <param name="inputTemplate">输入框模板</param>
        /// <param name="submitTemplate">提交按钮模板</param>
        /// <param name="homeString">首页文字</param>
        /// <param name="lastString">末页文字</param>
        /// <param name="prevString">上一页文字</param>
        /// <param name="nextString">下一页文字</param>
        internal Pager(HtmlHelper helper, IPageModel model,
                       int showCount,
                       bool isShowHomeAndLast,
                       bool isShowPrevAndNext,
                       bool isHomeAndLastInside,
                       bool isShowInput,
                       bool isUseDefaultSubmitScript,
                       bool isWithQueryString,
                       bool isUrlEncode,
                       string interval,
                       string itemTemplate,
                       string indexTemplate,
                       string parentTemplate,
                       string inputTemplate,
                       string submitTemplate,
                       string homeString,
                       string lastString,
                       string prevString,
                       string nextString)
        {
            thisCounter = System.Threading.Interlocked.Increment(ref Counter);

            Index          = Math.Max(model.PageIndex, 1);
            Count          = Math.Max(0, model.PageCount);
            Index          = Math.Min(Index, Count);
            ShowCount      = Math.Min(Math.Max(3, showCount), Count);
            ItemTemplate   = itemTemplate;
            IndexTemplate  = indexTemplate;
            ParentTemplate = parentTemplate;
            InputTemplate  = inputTemplate;
            SubmitTemplate = submitTemplate;
            if (isWithQueryString)
            {
                QueryString = Util.GetUrlQuerys(helper.ViewContext.HttpContext.Request.Url.Query, isUrlEncode);
            }
            else
            {
                QueryString = new NameValueCollection();
            }
            if (model.UrlProvider == null)
            {
                UrlHelper = new System.Web.Mvc.UrlHelper(helper.ViewContext.RequestContext);
                var actionName = UrlHelper.RequestContext.RouteData.Values["action"] as String;

                Provider = page =>
                {
                    QueryString["page"] = page.ToString();
                    return(Util.UrlCombine(UrlHelper.Action(actionName), QueryString, isUrlEncode));
                };
            }
            else
            {
                Provider = page =>
                {
                    var values = new RouteValueDictionary(QueryString);
                    values["page"] = page;
                    return(model.UrlProvider(page, values));
                };
            }

            IsShowInput = isShowInput;
            IsUseDefaultSubmitScript = isUseDefaultSubmitScript;
            IsShowHomeAndLast        = isShowHomeAndLast;
            IsShowPrevAndNext        = isShowPrevAndNext;
            IsHomeAndLastInside      = isHomeAndLastInside;
            Interval   = interval;
            HomeString = homeString ?? String.Empty;
            LastString = lastString;
            PrevString = prevString ?? String.Empty;
            NextString = nextString ?? String.Empty;
        }