ASP.NET MVC分页的实现(下)

简介:


5添加View。选中NewsController,右键,添加View,会弹出如下图:

在这里,我们选中MvcCompany.Models.news,在View content下拉列表中选择List(因为要实现列表分页)。
Index.aspx页面代码如下:
<% @  Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MvcCompany.Models.NewList<MvcCompany.Models.news>>" %>
< asp : Content  ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
     新闻
</ asp : Content >
< asp : Content  ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<!-- 前半部分-->  
  <%using (Html.BeginForm())
      %>
    <h2>
         新闻列表</h2>
    <table>
        <tr>
            <th>
                 编号
            </th>
            <th>
                 题目
            </th>
            <th>
                 时间
            </th>
            <th>
                 内容
            </th>
        </tr>
        <% foreach (var item in Model)
           %>
        <tr>
            <td>
                <%= Html.Encode(item.ID)%>
            </td>
            <td>
                <%= Html.Encode(item.title)%>
            </td>
            <td>
                <%= Html.Encode(String.Format("{0:g}", item.datetimes))%>
            </td>
            <td>
                <%= Html.Encode(item.contents)%>
            </td>
        </tr>
        <% } %>
    </table>
< hr  />
    <!-- 后半部分-->
    <% =Html.RouteLink(" 首页" "UpcomingNews"new { page = 0 })%>|
    <%  if (Model.HasPreviousPage)
        {%>
    <% =Html.RouteLink(" 上一页" "UpcomingNews"new { page = (Model.PageIndex - 1) })%>|
    <%%>
    <%  if (Model.HasNextPage)
        {%>
    <% =Html.RouteLink(" 下一页" "UpcomingNews"new { page = (Model.PageIndex + 1) })%>|
    <%%>
    <% =Html.RouteLink(" 尾页" "UpcomingNews"new { page = Model.PageSize - 1 })%>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    
    <%=Html.TextBox("pageindex", Model.PageIndex, new {style="width:30px;"})%> <input
        type="submit" value=" 转到"  id="sub" />
    <%%>
</ asp : Content >
代码的前半部分,很好理解。
代码的后半部分,我们来分析一下,首页,是采用
Html.RouteLink(“首页”,”UpcomingNews”,new{ page=0}),是要定位到名称为”UpcomingNews”的路由,这个路由在Global.asax中,代码如下:
routes.MapRoute(
             "UpcomingNews",
             "News/page/{page}",
         new { controller = "News", action = "Index" });
路由的名称是”UpcominNews”Url格式是News/page/{page}Newspageurl的一种格式,后面{page}是参数,这个参数的名称要与View中,后半部分的new{page=0}page,以及NewsController中的方法Index(int? page)中的page都必需统一。如果有请求
News/page/2url,实际上请求的是 news?page=2的页网(路由在ASP.NET MVC官上有说明)。
首页为中的page=0,最终会成为NesControllerIndex(int? page)方法,的实参,返回首页数据(及数据库表的前5条数据)。
上一页,在当前页数PageIndex的基础上减1
下一页,在当前页数PageIndex的基础上加1
(注:上面的加减1都不会越界,因为当显示第一页时,“上一页”的超连接就不会显示。当最后一页时,“下一页”的超连接就不会显示)
尾页同首页。
现在的一个问题是“转到”第几页的实现,我们知道,转到第几页的“几”,得用户输入,所以这里用一个Html.TextBox来实现,完全代码是
<%=Html.TextBox("pageindex", Model.PageIndex, new {style="width:30px;"})%>
最终会生成一个名称为pageindexintup,类型为Text,它的值始终为当前的索引页值Model.PageIndex,其中有一个宽度的属性new {style="width:30px;"}
同时还有一个<input  type="submit" value="转到" id="sub" />用来向后参提交。因为代码中有<form>表单,所以可以在NewsController中接收这个提交。
Index(FormCollection formValues)方法用来处理这个提交。这里会从formValues.GetValue("pageindex").AttemptedValue中午到客户端用户输入“pageindex”文本框中的值。从而来完成定向。
 
至此,我们就用ASP.NET MVC实现了一个分页功能,相比之下要难ASP.NETGridView自动分页好多。
在这个例子中,我们在Models层中提供了实体类及news表的集合类。在Controller层增加了NewsController类。在View层增加了Newsview,从M-V-C角度,分别完成了对分页的功能。





















本文转自桂素伟51CTO博客,原文链接:http://blog.51cto.com/axzxs/200136 ,如需转载请自行联系原作者

相关文章
|
1月前
|
开发框架 JavaScript .NET
asp.net中条件查询+分页
asp.net中条件查询+分页
15 1
|
3月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
41 0
|
1月前
|
开发框架 前端开发 .NET
进入ASP .net mvc的世界
进入ASP .net mvc的世界
29 0
|
1月前
mvc.net分页查询案例——mvc-paper.css
mvc.net分页查询案例——mvc-paper.css
5 0
|
1月前
|
开发框架 前端开发 .NET
C# .NET面试系列六:ASP.NET MVC
<h2>ASP.NET MVC #### 1. MVC 中的 TempData\ViewBag\ViewData 区别? 在ASP.NET MVC中,TempData、ViewBag 和 ViewData 都是用于在控制器和视图之间传递数据的机制,但它们有一些区别。 <b>TempData:</b> 1、生命周期 ```c# TempData 的生命周期是短暂的,数据只在当前请求和下一次请求之间有效。一旦数据被读取,它就会被标记为已读,下一次请求时就会被清除。 ``` 2、用途 ```c# 主要用于在两个动作之间传递数据,例如在一个动作中设置 TempData,然后在重定向到另
95 5
|
3月前
|
XML 前端开发 定位技术
C#(NET Core3.1 MVC)生成站点地图(sitemap.xml)
C#(NET Core3.1 MVC)生成站点地图(sitemap.xml)
25 0
|
3月前
|
前端开发
.net core mvc获取IP地址和IP所在地(其实是百度的)
.net core mvc获取IP地址和IP所在地(其实是百度的)
123 0
|
5月前
|
开发框架 自然语言处理 前端开发
基于ASP.NET MVC开发的、开源的个人博客系统
基于ASP.NET MVC开发的、开源的个人博客系统
52 0
|
8月前
|
存储 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(五)
经过一段时间的准备,新的一期【ASP.NET Core MVC开发实战之商城系统】已经开始,在之前的文章中,讲解了商城系统的整体功能设计,页面布局设计,环境搭建,系统配置,及首页【商品类型,banner条,友情链接,降价促销,新品爆款】,商品列表页面,商品详情等功能的开发,今天继续讲解购物车功能开发,仅供学习分享使用,如有不足之处,还请指正。
114 0
|
9月前
|
开发框架 前端开发 .NET
[回馈]ASP.NET Core MVC开发实战之商城系统(三)
[回馈]ASP.NET Core MVC开发实战之商城系统(三)
67 0