asp.net MVC1.0 分页问题

luyanvv 2009-06-17 11:33:13
我在Controller文件里面建一个FirstControler:

--这是我新建的ADO.NET 实体
NorthwindEntities1 db = new NorthwindEntities1();

public ActionResult f(int? page)
{
const int pageSize = 10;
var upcomingOrders = FindUpcomingOrders();
var paginatedOrders = new PaginatedList<Orders>(upcomingOrders, page ?? 0, pageSize);
return View(paginatedOrders);
}

public IQueryable<Orders> FindUpcomingOrders()
{
return from order in db.Orders
where order.OrderDate < DateTime.Now
orderby order.OrderDate
select order;
}

接着又建了一个类,是在同一个命名空间的:
public class PaginatedList<T> : List<T>
{
public int PageIndex { get; private set; }
public int PageSize { get; private set; }
public int TotalCount { get; private set; }
public int TotalPages { get; private set; }

public PaginatedList(IQueryable<T> source, int pageIndex, int pageSize)
{
PageIndex = PageIndex;
PageIndex = pageSize;
TotalCount = source.Count();
TotalPages = (int)Math.Ceiling(TotalCount / (double)PageSize);
this.AddRange(source.Skip(PageIndex * PageSize).Take(PageSize));
}

public bool HasPreviousPage
{
get { return (PageIndex > 0); }
}

public bool HasNextPage
{
get { return (PageIndex + 1 < TotalPages); }
}
}

接着,我又在View文件里面新建了一个f.aspx
把继承改为
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<MVC_First.Controllers.PaginatedList<Orders>>%>"
<table style="border:solid 1px #cccccc" width="100%">
<%
foreach (var m in ViewData.Model)
{
%>
<tr><td><%=m.OrderID %></td></tr>
<%
}
%>
</table>
<% if (Model.HasPreviousPage)//这个是PaginatedList的属性
{ %>
<%= Html.RouteLink("上一页","UpcomingDinners",new { page=(Model.PageIndex-1) }) %>
<% } %>
<% if (Model.HasNextPage)
{ %>
<%= Html.RouteLink("下一页","UpcomingDinners",new { page = (Model.PageIndex + 1) })%>
<% } %>

运行的时候,它就报要Orders没有using.
然后,我就把System.Web.Mvc.ViewPage<MVC_First.Controllers.PaginatedList<Orders>>%>换成
System.Web.Mvc.ViewPage<List<MVC_First.Models.Orders>>
它又报认不到HasPreviousPage属性,也是没有using
天啊.该怎么弄呀


...全文
133 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
luyanvv 2009-06-19
  • 打赏
  • 举报
回复
谢谢各位,现在没有出现那个认不到命名空间的问题啦.

可能是我写的SQL语句的问题吧,我检查下,如果真的不行,我再另外开贴.

结账罗.................................................
luyanvv 2009-06-19
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 hzzasdf 的回复:]
把Orders所在的命名空间加上:
<%@ Import Namespace = "。。。" %>
[/Quote]

我试过了,这个是不行的.
改成这样就没问题
Inherits="System.Web.Mvc.ViewPage <MVC_First.Models.PaginatedList <MVC_First.Models.Orders>>

但是数据就是显示不出来呀.天啊.
  • 打赏
  • 举报
回复
把Orders所在的命名空间加上:
<%@ Import Namespace = "。。。" %>
sforiz 2009-06-17
  • 打赏
  • 举报
回复
学习、、、UP
li_dao_hang_1989 2009-06-17
  • 打赏
  • 举报
回复
楼主厉害都搞mvc啦……
呵呵……
我也学习!
Jack123 2009-06-17
  • 打赏
  • 举报
回复
up,,
浮生若梦丶 2009-06-17
  • 打赏
  • 举报
回复
看到太多的代码就晕呼呼~~~
bjs007 2009-06-17
  • 打赏
  • 举报
回复
建议你在MOdels文件夹下新建个PaginatedList类,里面的代码
public class PaginatedList <T> : List <T>
{
public int PageIndex { get; private set; }
public int PageSize { get; private set; }
public int TotalCount { get; private set; }
public int TotalPages { get; private set; }

public PaginatedList(IQueryable <T> source, int pageIndex, int pageSize)
{
PageIndex = PageIndex;
PageIndex = pageSize;
TotalCount = source.Count();
TotalPages = (int)Math.Ceiling(TotalCount / (double)PageSize);
this.AddRange(source.Skip(PageIndex * PageSize).Take(PageSize));
}

public bool HasPreviousPage
{
get { return (PageIndex > 0); }
}

public bool HasNextPage
{
get { return (PageIndex + 1 < TotalPages); }
}
}

然后在FirstControler:这样写
public ActionResult f(int? page)
{
const int pageSize = 10;
var upcomingOrders = FindUpcomingOrders();
var paginatedOrders = new PaginatedList <Orders>(upcomingOrders, page ?? 0, pageSize);
//导入命名空间:using MVC_First.Models
return View(paginatedOrders);
}

Inherits="System.Web.Mvc.ViewPage <MVC_First.Controllers.PaginatedList <Orders>>
换成:Inherits="System.Web.Mvc.ViewPage <MVC_First.Models.PaginatedList <MVC_First.Models.Orders>>
luyanvv 2009-06-17
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 bjs007 的回复:]
Inherits="System.Web.Mvc.ViewPage <MVC_First.Controllers.PaginatedList <Orders>>
换成:Inherits="System.Web.Mvc.ViewPage <MVC_First.Controllers.PaginatedList <MVC_First.Models.Orders>>试试
[/Quote]
那样是可以了,但是为什么没有数据显示呢.
bjs007 2009-06-17
  • 打赏
  • 举报
回复
Inherits="System.Web.Mvc.ViewPage <MVC_First.Controllers.PaginatedList <Orders>>
换成:Inherits="System.Web.Mvc.ViewPage <MVC_First.Controllers.PaginatedList <MVC_First.Models.Orders>>试试
luyanvv 2009-06-17
  • 打赏
  • 举报
回复
我前天才可以看MVC,就做几个例子,头都大了.

我不知道怎么给它加引用呀.天啊.该怎么办呀.
winner2050 2009-06-17
  • 打赏
  • 举报
回复
好端端的三层结构的ASP.net不用。

MVC 都写成了 ASP+ 了,何苦呢!
bjs007 2009-06-17
  • 打赏
  • 举报
回复
貌似楼主的代码是参照Scott的pdf版MVC教程写的!
Dream_Hunter_ 2009-06-17
  • 打赏
  • 举报
回复
顶!学习!虽然还没接触过MVC...
yan286093636 2009-06-17
  • 打赏
  • 举报
回复
牛啊,MVC都搞上了。。。。。。。。。。。。。学习了.....
desegou 2009-06-17
  • 打赏
  • 举报
回复
把该用到得引用加上去

62,073

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧