博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET MVC分页的实现(下)
阅读量:7197 次
发布时间:2019-06-29

本文共 2914 字,大约阅读时间需要 9 分钟。

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}
News
page
url
的一种格式,后面{page}
是参数,这个参数的名称要与View
中,后半部分的new{page=0}
page
,以及NewsController
中的方法Index(int? page)
中的page
都必需统一。如果有请求
News/page/2
url
,实际上请求的是 news?page=2
的页网(路由在ASP.NET MVC
官上有说明)。
首页为中的page=0
,最终会成为NesController
Index(int? page)
方法,的实参,返回首页数据(及数据库表的前5
条数据)。
上一页,在当前页数PageIndex
的基础上减1
下一页,在当前页数PageIndex
的基础上加1
(注:上面的加减1
都不会越界,因为当显示第一页时,“上一页”的超连接就不会显示。当最后一页时,“下一页”的超连接就不会显示)
尾页同首页。
现在的一个问题是“转到”第几页的实现,我们知道,转到第几页的“几”,得用户输入,所以这里用一个Html.TextBox
来实现,完全代码是
<%=Html.TextBox("pageindex", Model.PageIndex, new {style="width:30px;"})%>
最终会生成一个名称为pageindex
intup
,类型为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.NET
GridView
自动分页好多。
在这个例子中,我们在Models
层中提供了实体类及news
表的集合类。在Controller
层增加了NewsController
类。在View
层增加了News
view
,从M-V-C
角度,分别完成了对分页的功能。
本文转自桂素伟51CTO博客,原文链接:http://blog.51cto.com/axzxs/200136 ,如需转载请自行联系原作者
你可能感兴趣的文章
centos7.2下安装python3.6.2
查看>>
列表(一)
查看>>
【转】王钿《浅谈逻辑设计的学习》
查看>>
js闭包
查看>>
几何画板如何通过迭代法绘图
查看>>
BarTender表单的人性化设计—分组框
查看>>
在 CSS 中,width 和 height 指的是内容区域的宽度和高度
查看>>
河马SQLServer注入工具v1.1
查看>>
Linux基础知识随笔记
查看>>
Oracle:ORA-01791: 不是 SELECTed 表达式
查看>>
SpringMVC快速入门
查看>>
2019-05-20 Java学习日记之String类型
查看>>
.net core Jenkins持续集成Linux、Docker、K8S
查看>>
python入门
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
Cisco ASA5512 双线
查看>>
杨元庆:税收影响联想电脑国内售价
查看>>
Linux虚拟机下lvm扩大根目录磁盘空间
查看>>
tomcat应用实践(虚拟主机以及站点优化)
查看>>