111,120
社区成员
发帖
与我相关
我的任务
分享
[/quote]
额……还是一样,报了一楼的错误
编译错误
“System.Web.Mvc.HtmlHelper<dynamic>”没有名为“Pager”的适用方法,但似乎有一个具有该名称的扩展方法。扩展方法不能进行动态调度。请考虑强制转换动态参数,或调用该扩展方法但不使用扩展方法语法。 
using System;
using System.Collections.Generic;
using System.Linq;
namespace System.Collections.Generic
{
public class PagedList<T> : List<T>
{
/// <summary>
/// 页索引
/// </summary>
public int PageIndex { get; private set; }
/// <summary>
/// 页大小
/// </summary>
public int PageSize { get; private set; }
/// <summary>
/// 总数据条数
/// </summary>
public int TotalCount { get; private set; }
/// <summary>
/// 总页数
/// </summary>
public int TotalPages { get; private set; }
public PagedList(List<T> source, int pageIndex, int pageSize)
{
PageIndex = pageIndex;
PageSize = pageSize;
TotalCount = source.Count();
TotalPages = (int)Math.Ceiling(TotalCount / (double)PageSize);
this.AddRange(source.Skip((PageIndex-1) * PageSize).Take(PageSize));
}
/// <summary>
/// 是否包含上一页
/// </summary>
public bool HasPreviousPage
{
get
{
return (PageIndex > 1);
}
}
public bool HasNextPage
{
get
{
return (PageIndex < TotalPages);
}
}
}
}
下面这段是输入分页页码,上一页下一页的
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Mvc.Html;
using System.Web.Routing;
namespace System.Web.Mvc
{
public static class PagerExtension
{
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();
}
}
}
这两个是我那分页的程序代码,例子里面的,我直接拿过来用了。
cshtml页面的代码,头部没有任何引用。
只有 @Html.Pager(Model) 这段代码,然后就出现1楼的问题。@using Webdiyer.WebControls.Mvc;
代码可能是这样的@Html.Pager(Model, new PagerOptions
{
PageIndexParameterName = "pageIndex",
ContainerTagName = "ul",
PrevPageText = "Prev",
NextPageText = "Next",
FirstPageText = "First",
LastPageText = "Last",
CssClass = "hz_page tc",
PagerItemsSeperator = "",
CurrentPagerItemWrapperFormatString = "<li><a href=\"#\" class=\"activity\">{0}</a></li>",
PagerItemWrapperFormatString = "<li>{0}</li>"
},
new { id = "xpager" })
那么你应该先添加第三方的引用 MvcPager