public static string Pager <T>(this HtmlHelper html, PagedList <T> data)
        {
            int start = (data.PageIndex - 5) >= 1 ? (data.PageIndex - 5) : 1;
            int end   = (data.TotalPages - start) > 10 ? start + 10 : data.TotalPages;

            RouteValueDictionary vs = html.ViewContext.RouteData.Values;

            var queryString = html.ViewContext.HttpContext.Request.QueryString;

            foreach (string key in queryString.Keys)
            {
                //if (queryString[key] != null && !string.IsNullOrEmpty(key))
                vs[key] = queryString[key];
            }

            var FormString = html.ViewContext.HttpContext.Request.Form;

            foreach (string key in FormString.Keys)
            {
                vs[key] = FormString[key];
            }

            var builder = new StringBuilder();

            builder.AppendFormat("<div class=\"mvc_pager\">");

            if (data.HasPreviousPage)
            {
                vs["pageIndex"] = 1;
                builder.Append(LinkExtensions.ActionLink(html, "首页", vs["action"].ToString(), vs));
                vs["pageIndex"] = data.PageIndex - 1;
                builder.Append(LinkExtensions.ActionLink(html, "上页", vs["action"].ToString(), vs));
            }

            for (int i = start; i <= end; i++) //前后各显示5个数字页码
            {
                vs["pageIndex"] = i;
                if (i == data.PageIndex)
                {
                    builder.Append("<font class='thispagethis'>" + i.ToString() + "</font>");
                }
                else
                {
                    builder.Append(LinkExtensions.ActionLink(html, i.ToString(), vs["action"].ToString(), vs));
                }
            }

            if (data.HasNextPage)
            {
                vs["pageIndex"] = data.PageIndex + 1;
                builder.Append(LinkExtensions.ActionLink(html, "下页", vs["action"].ToString(), vs));
                vs["pageIndex"] = data.TotalPages;
                builder.Append(LinkExtensions.ActionLink(html, "末页", vs["action"].ToString(), vs));
            }
            builder.Append("共" + data.TotalCount + "条 第" + data.PageIndex + "页/共" + data.TotalPages + "页 </div>");
            return(builder.ToString());
        }
Beispiel #2
0
        public static string Pager <T>(this HtmlHelper html, PagedList <T> data)
        {
            //数字导航的开始数字
            int start = (data.PageIndex - 5) >= 1 ? (data.PageIndex - 5) : 1;
            //数字导航的结束数字
            int end = (data.TotalPages - start) > 10 ? start + 10 : data.TotalPages;

            //路由数据
            RouteValueDictionary vs = html.ViewContext.RouteData.Values;
            //URL数据
            var queryString = html.ViewContext.HttpContext.Request.QueryString;

            //合并URL数据
            foreach (string key in queryString.Keys)
            {
                if (queryString[key] != null && !string.IsNullOrEmpty(key))
                {
                    vs[key] = queryString[key];
                }
            }
            //合并表单数据
            var FormString = html.ViewContext.HttpContext.Request.Form;

            foreach (string key in FormString.Keys)
            {
                vs[key] = FormString[key];
            }
            //输出分页Html
            var builder = new StringBuilder();

            builder.AppendFormat("<div class=\"pager\"><ul>");
            //显示首页和上页
            if (data.HasPreviousPage)
            {
                vs["pageIndex"] = 1;
                builder.Append("<li>" + LinkExtensions.ActionLink(html, "首页", vs["action"].ToString(), vs) + "</li>");
                vs["pageIndex"] = data.PageIndex - 1;
                builder.Append("<li>" + LinkExtensions.ActionLink(html, "上页", vs["action"].ToString(), vs) + "</li>");
            }
            //显示数字页码
            for (int i = start; i <= end; i++)
            {
                vs["pageIndex"] = i;
                if (i == data.PageIndex)
                {
                    builder.Append("<li><a class='current'>" + i.ToString() + "</a></li>");
                }
                else
                {
                    builder.Append("<li>" + LinkExtensions.ActionLink(html, i.ToString(), vs["action"].ToString(), vs) + "</li>");
                }
            }
            //显示下页和末页
            if (data.HasNextPage)
            {
                vs["pageIndex"] = data.PageIndex + 1;
                builder.Append("<li>" + LinkExtensions.ActionLink(html, "下页", vs["action"].ToString(), vs) + "</li>");
                vs["pageIndex"] = data.TotalPages;
                builder.Append("<li>" + LinkExtensions.ActionLink(html, "末页", vs["action"].ToString(), vs) + "</li>");
            }
            builder.Append("<li>共" + data.TotalCount + "条 第" + data.PageIndex + "页/共" + data.TotalPages + "页</li> </ul></div>");
            return(builder.ToString());
        }
        /// <summary>
        /// HtmlHelper类的分页导航条扩展方法
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="html"></param>
        /// <param name="data">数据</param>
        /// <returns>HTML元素</returns>
        public static MvcHtmlString Pager <T>(this HtmlHelper html, PagedList <T> data)
        {
            //起始数字
            int start = data.PageIndex - 5 >= 1 ? data.PageIndex - 5 : 1;
            //结束数字
            int end = data.TotalPages - start > 10 ? start + 10 : data.TotalPages;
            //路由数据
            RouteValueDictionary rvs = html.ViewContext.RouteData.Values;
            //url数据
            var querystring = html.ViewContext.HttpContext.Request.QueryString;

            //合并url数据
            foreach (string key in querystring.Keys)
            {
                if (querystring[key] != null && !string.IsNullOrEmpty(key))
                {
                    rvs[key] = querystring[key];
                }
            }
            //合并form数据
            var forms = html.ViewContext.HttpContext.Request.Form;

            foreach (string key in forms.Keys)
            {
                rvs[key] = forms[key];
            }

            //拼装分页html
            StringBuilder builder = new StringBuilder();

            //显示首页和上一页
            if (data.HasPreviousPage)
            {
                rvs["pageIndex"] = 1;
                builder.Append(LinkExtensions.ActionLink(html, "首页", rvs["action"].ToString(), rvs));
                rvs["pageIndex"] = data.PageIndex - 1;
                builder.Append(LinkExtensions.ActionLink(html, "上一页", rvs["action"].ToString(), rvs));
            }

            //显示数字页码
            for (int i = start; i <= end; i++)
            {
                rvs["pageIndex"] = i;
                if (i == data.PageIndex)
                {
                    builder.AppendFormat("<font>{0}</font>", i);
                }
                else
                {
                    builder.Append(LinkExtensions.ActionLink(html, i.ToString(), rvs["action"].ToString(), rvs));
                }
            }

            //显示下一页和尾页
            if (data.HasNextPage)
            {
                rvs["pageIndex"] = data.PageIndex + 1;
                builder.Append(LinkExtensions.ActionLink(html, "下一页", rvs["action"].ToString(), rvs));
                rvs["pageIndex"] = data.TotalPages;
                builder.Append(LinkExtensions.ActionLink(html, "尾页", rvs["action"].ToString(), rvs));
            }

            //显示页码信息
            builder.AppendFormat("第{0}页/共{1}页", data.PageIndex, data.TotalPages);
            return(new MvcHtmlString(builder.ToString()));
        }
Beispiel #4
0
 public static MvcHtmlString ActionLink <TActionResult>(this HtmlHelper htmlHelper, string linkText, Task <TActionResult> taskResult, IDictionary <string, object> htmlAttributes, string protocol, string hostName, string fragment) where TActionResult : ActionResult
 {
     return(LinkExtensions.RouteLink(htmlHelper, linkText, (string)null, protocol ?? T4Extensions.GetT4MVCResult(taskResult.Result).Protocol, hostName, fragment, T4Extensions.GetRouteValueDictionary(taskResult.Result), htmlAttributes));
 }