zoukankan      html  css  js  c++  java
  • ASP.NET MVC轻教程 Step By Step 9——分页

    现在我们要把Index视图的留言信息进行分页显示。

    Step 1. 创建路由

    我们希望以类似地址http://localhost:41583/Page1来表示第一页,Page2表示第二页,以此类推。在RouteConfig.cs中已有一条默认路由,但不能满足匹配类似/Page1这样的URL。我们要添加一条新的路由规则。

            public static void RegisterRoutes(RouteCollection routes)
            {
                routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    
                routes.MapRoute(
                    name: "Index",
                    url: "Page{page}",
                    defaults: new { controller = "Home", action = "Index" }
                );
    
                routes.MapRoute(
                    name: "Default",
                    url: "{controller}/{action}/{id}",
                    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
                );
            }

    Step 2. 修改Index动作方法

            public ActionResult Index(int page=1)
            {
                int pagesize = 3;
                ViewBag.Page = page;
                ViewBag.TotalPages = Math.Ceiling((double)messages.Count / pagesize);
                return View(messages.Skip((page-1)*pagesize).Take(pagesize).OrderByDescending(v=>v.ReleaseDate));
            }

    Index动作方法做了很多修改补充。page参数与路由规则中的{page}相对应,设置了其默认值为1,这样页面首先展示第一页。pagesize设定每页显示留言数量,通过ViewBag把当前页和总页数传递给Index视图。

    Step 3. 修改Index视图

    <body>
        <h1>MVC留言板</h1>
        @Html.ActionLink("我要留言", "Write")
        @foreach (var message in Model)
        {
            <p>@message.NickName</p>
            <p>@message.Content</p>
            <p>@message.ReleaseDate</p>
            <br />
        }
    
        @if (ViewBag.Page > 1)
        {
            @Html.ActionLink("上一页", "Index", new { page = ViewBag.Page - 1 })
        }
        @if (ViewBag.Page < ViewBag.TotalPages)
        {
            @Html.ActionLink("下一页", "Index", new { page = ViewBag.Page + 1 })
        }
    <body>

    通过当前页和总页数来有选择的生成超链接。现在我们可以看到成果了。

    这个分页当然非常地简陋,有很多改进的余地。如果想把分页做得更美观、功能更强大,可以参考这我的一篇《Asp.net MVC分页实例》。

  • 相关阅读:
    struts1与struts2的差别
    UVA 1563
    项目开发相关规范
    互联网产品的測试
    虚拟机器人
    Caused by: java.lang.ClassNotFoundException: org.hibernate.annotations.common.reflection.MetadataPro
    HDU 1429--胜利大逃亡(续)【BFS &amp;&amp; 状态压缩】
    自己写的php curl库实现整站克隆
    设置字符串中某些字符的特殊效果
    Objective-C学习笔记(二十二)——初始化方法init的重写与自己定义
  • 原文地址:https://www.cnblogs.com/nivi3000/p/4970086.html
Copyright © 2011-2022 走看看