• MVC学习之数据分页:利用组件PagedList.Mvc


    准备工作:

         在项目的【管理NuGet程序包】中安装PagedList.Mvc组件。

         安装好了截图让下:

    具体实现

    后台控制器代码:

    using Paging.Models;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using PagedList;      //一定要引入这个命名空间
    using System.Data;   
    
    namespace Paging.Controllers
    {
        public class PagingController : Controller
        {
            private ComputerEntities db = new ComputerEntities();   //得到数据库上下文
            /// <summary>
            /// 数据展示
            /// </summary>
            /// <param name="p">当前页数</param>
            /// <returns>当页的数据</returns>
            public ActionResult Index(int p =1)   
            {
                var data = db.ComputerInfo.ToList();   //得到数据源
                //P:表示当前是第几页,2:表示每页展示的数据条数
                var pageData = data.ToPagedList(pageNumber:p,pageSize:2);     
                return View(pageData);
            }
    
            /// <summary>
            /// 编辑数据
            /// </summary>
            /// <param name="id"></param>
            /// <returns></returns>
            public ActionResult Edit(int id=0)
            {
                var data = db.ComputerInfo.Find(id);
                if (data != null)
                {
                    return View(data);
                }
                else
                {
                    return HttpNotFound();
                }
            }
    
            [HttpPost]
            public ActionResult Edit(ComputerInfo cinfo)
            {
                if(ModelState.IsValid){
                    db.Entry(cinfo).State = EntityState.Modified;
                    db.SaveChanges();
                }
                return RedirectToAction("Index");
            }
    
            /// <summary>
            /// 删除数据
            /// </summary>
            /// <param name="id"></param>
            /// <returns></returns>
            [HttpPost]
            public ActionResult Delete(int id)
            {
                var Cinfo = db.ComputerInfo.Find(id);
                if (Cinfo!=null)
                {
                    db.ComputerInfo.Remove(Cinfo);
                    db.SaveChanges();
                }
                return RedirectToAction("Index", "Paging");
            }
    
            /// <summary>
            /// 数据详情
            /// </summary>
            /// <param name="id"></param>
            /// <returns></returns>
            public ActionResult Details(int id)
            {
                var data = db.ComputerInfo.Find(id);
                return View(data);
            }
        }
    }

    前端页面:

    Index:数据展示页面【涉及到分页】
    @using PagedList           //记得引入
    @using PagedList.Mvc        //记得引入
    @model IEnumerable<Paging.Models.ComputerInfo>
    
    @{
        ViewBag.Title = "数据展示页";
    }
    @{
        var ajaxOptions = new AjaxOptions()
        {
            OnSuccess = "OK",
            OnFailure = "Failure",
            Confirm = "您确定要删除这条信息吗?",
            HttpMethod="Post"    
        };
    }
    
    @section scripts{
      @Scripts.Render("~/bundles/jqueryval")
        <script>
            function OK() {
                alert("删除成功!");
                location.reload();
            }
            function Failure() {
                alert("删除失败!");
            }
        </script>
    }
    <h2>数据展示</h2>
    <table>
        <tr>
            <th>
                @Html.DisplayNameFor(model => model.Name)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.Price)
            </th>
            <th></th>
        </tr>
    
    @foreach (var item in Model) {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.Name)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Price)
            </td>
            <td>
                @Html.ActionLink("编辑", "Edit", new { id=item.Id }) |
                @Html.ActionLink("详情", "Details", new { id=item.Id }) |
                @Ajax.ActionLink("删除", "Delete", new { id = item.Id }, ajaxOptions)
            </td>
        </tr>
    }
    </table>
    //下面是分页涉及到的东西 <link href="~/Content/PagedList.css" rel="stylesheet" /> //样式 @{ var data = Model as IPagedList<Paging.Models.ComputerInfo>; //得到数据源 } @Html.PagedListPager(list: data, generatePageUrl: Page => Url.Action("Index", new { p=Page})) //分页链接

    编辑页面:

    @model Paging.Models.ComputerInfo
    @{
        ViewBag.Title = "数据编辑页";
    }
    
    <h2>编辑页面</h2>
    
    @using (Html.BeginForm()) {
        @Html.AntiForgeryToken()
        @Html.ValidationSummary(true)
    
        <fieldset>
            <legend>@Model.Name 的编辑页面</legend>
    
            @Html.HiddenFor(model => model.Id)
    
            <div class="editor-label">
                @Html.LabelFor(model => model.Name)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.Name)
                @Html.ValidationMessageFor(model => model.Name)
            </div>
    
            <div class="editor-label">
                @Html.LabelFor(model => model.Price)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.Price)
                @Html.ValidationMessageFor(model => model.Price)
            </div>
    
            <p>
                <input type="submit" value="保存" />
            </p>
        </fieldset>
    }
    
    <div>
        @Html.ActionLink("首页", "Index")
    </div>
    
    @section Scripts {
        @Scripts.Render("~/bundles/jqueryval")
    }

    详情页面:

    @model Paging.Models.ComputerInfo
    @{
        ViewBag.Title = "数据详情页";
    }
    <h2>详情页</h2>
    <fieldset>
        <legend>@Model.Name 的详情信息</legend>
    
        <div class="display-label">
             @Html.DisplayNameFor(model => model.Name)
        </div>
        <div class="display-field">
            @Html.DisplayFor(model => model.Name)
        </div>
    
        <div class="display-label">
             @Html.DisplayNameFor(model => model.Price)
        </div>
        <div class="display-field">
            @Html.DisplayFor(model => model.Price)
        </div>
    </fieldset>
    <p>
        @Html.ActionLink("编辑", "Edit", new { id=Model.Id }) |
        @Html.ActionLink("首页", "Index")
    </p>

    小结:

    在使用PagedList组件实现分页:主要就以下几步:

    1、在后台代码中引入:using PagedList;命名空间,同时获得数据源【注意数据源的类型一定要转换成IEnumerable或是IQueryable,或是继承这两个型别的子类也可以】:data。

    2、通过var pagedata = data.ToPagedList(pageNumber:p,pageSize:2) 获得分页后的结果信息:其中pageNumber:表示当前是第几页,PageSize:表示每页展示的数据的条数。

    3、在页面顶部引入以下两个命名空间:

       @using PagedList

       @using PagedList.Mvc

    4、当安装好了PagedList组件后,在项目的Content文件夹下,会有一个PagedList.css的默认的分页所需的样式表,在使用@Html.PagedListPager之前引用它。会让分页更加好看

    5、在View页面上通过@Html.PagedListPager(list: data, generatePageUrl: Page => Url.Action("Index", new { p=Page}))辅助方法输出分页所需的分页导览链接。其中list:对应的是数据【控制器传到页面上的数据】,但是这个类型要转为IpagedList<T>类型的。,generatePageUrl:就是分页导航链接。

    写写博客,方便自己也方便有需要的人!*_*!

        

  • 相关阅读:
    MySQL数据库的主从同步
    学习Java必看的Java书籍(高清中文最新版附下载链接)
    servlet重点知识总结
    JUnit & JMockit单元测试
    mongodb重点知识总结
    Quartz学习总结
    IDEA使用总结
    bat脚本知识总结
    linux shell脚本相关知识
    SpringMVC重点知识总结
  • 原文地址:https://www.cnblogs.com/Yisijun/p/4699343.html
Copyright © 2020-2023  润新知