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()); }
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())); }
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)); }