asp.net MVC使用PagedList.MVC实现分页效果

发布时间 - 2026-01-11 02:29:39    点击率:

在上一篇的EF之DB First中,存在以下的两个问题:

1. 添加/编辑页面显示的是属性名称,而非自定义的名称(如:姓名、专业...)

2. 添加/编辑时没有加入验证

3. 数据展示使用分页

@Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" }) 是显示属性Name的“标签”,如果没有指定Display特性,则直接显示属性名Name

通用数据库生成的实体模型文件与代码一般不直接修改(防止下次生成时覆盖),这里要使用验证与实体分离

添加一个验证类,代码如下 :

using System.ComponentModel.DataAnnotations;

namespace Zhong.Web.Models
{
 [MetadataType(typeof(T_StudentValidateInfo))]
 public partial class T_Student
 {
 }
 public class T_StudentValidateInfo
 {
  [Display(Name="姓名")]
  [Required(ErrorMessage ="姓名不能为空")]
  [StringLength(10,ErrorMessage ="姓名长度超出限制")]
  public string Name { get; set; }

  [Display(Name="学号")]
  [Required]
  [StringLength(20,MinimumLength =10,ErrorMessage ="长度为10-20")]
  public string StudentId { get; set; }
 }
}

此时前台访问并提交:

从上图可以发现Name变成了“姓名”,StudentsId变成了“学号”,点击Create按钮后,出现了验证提示信息。

分页的实时使用PagedList.MVC插件,可以nuget添加引用

StudentsController中增加一个List的控制器方法:

public ActionResult List(int page = 1)
{
 //var students = entities.T_Student.OrderBy(s => s.Id).Skip((page - 1) * 2).Take(2);
 var students = entities.T_Student.OrderBy(s => s.Id);
 return View(students.ToPagedList(page, 2));
}

视图代码如下:

@using PagedList.Mvc
@model PagedList.IPagedList<Zhong.Web.Models.T_Student>

@{
 ViewBag.Title = "List";
}

<h2>List</h2>

<p>
 @Html.ActionLink("Create New", "Create")
</p>
<table class="table">
 <tr>
  <th>
   姓名
  </th>
  <th>
   学号
  </th>
  <th>
   专业
  </th>
  <th></th>
 </tr>

@foreach (var item in Model) {
 <tr>
  <td>
   @Html.DisplayFor(modelItem => item.Name)
  </td>
  <td>
   @Html.DisplayFor(modelItem => item.StudentId)
  </td>
  <td>
   @Html.DisplayFor(modelItem => item.T_Major.Name)
  </td>
  <td>
   @Html.ActionLink("Edit", "Edit", new { id=item.Id }) |
   @Html.ActionLink("Details", "Details", new { id=item.Id }) |
   @Html.ActionLink("Delete", "Delete", new { id=item.Id })
  </td>
 </tr>
}

</table>
@Html.PagedListPager(Model,page => Url.Action("List",new { page}))

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# asp.net  # MVC  # PagedList.MVC  # 分页  # asp.net中用DataReader高效率分页  # Asp.net MVC 中利用jquery datatables 实现数据分页显示功能  # .NET中的repeater简介及分页效果  # Asp.Net MVC 分页、检索、排序整体实现代码  # asp.net分页控件使用详解【附实例下载】  # .NET集成DeveloperSharp实现高效分页与无主键分页  # 的是  # 变成了  # 提示信息  # 如果没有  # 自定义  # 而非  # 在上  # 要使  # 大家多多  # 为空  # 不直接  # 上图  # 出现了  # 长度为  # 下次  # ComponentModel  # System  # csharp  # align 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何为API编写文档_Laravel API文档生成与维护方法  如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环  如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)  Laravel如何实现文件上传和存储?(本地与S3配置)  如何在阿里云通过域名搭建网站?  5种Android数据存储方式汇总  Laravel怎么实现验证码(Captcha)功能  Android滚轮选择时间控件使用详解  创业网站制作流程,创业网站可靠吗?  Mybatis 中的insertOrUpdate操作  Laravel怎么实现微信登录_Laravel Socialite第三方登录集成  Laravel怎么实现模型属性的自动加密  百度输入法ai组件怎么删除 百度输入法ai组件移除工具  Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  如何在建站之星绑定自定义域名?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  PythonWeb开发入门教程_Flask快速构建Web应用  Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程  javascript读取文本节点方法小结  php做exe能调用系统命令吗_执行cmd指令实现方式【详解】  C++时间戳转换成日期时间的步骤和示例代码  Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议  如何快速辨别茅台真假?关键步骤解析  Laravel如何使用Telescope进行调试?(安装和使用教程)  Laravel如何创建自定义Artisan命令?(代码示例)  手机网站制作与建设方案,手机网站如何建设?  如何快速建站并高效导出源代码?  宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)  如何挑选高效建站主机与优质域名?  Python文件操作最佳实践_稳定性说明【指导】  油猴 教程,油猴搜脚本为什么会网页无法显示?  微信小程序 闭包写法详细介绍  夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化  百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧  laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法  QQ浏览器网页版登录入口 个人中心在线进入  laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法  网站制作报价单模板图片,小松挖机官方网站报价?  Laravel如何创建自定义Facades?(详细步骤)  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  Laravel怎么生成URL_Laravel路由命名与URL生成函数详解  如何使用 jQuery 正确渲染 Instagram 风格的标签列表  Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南  利用python获取某年中每个月的第一天和最后一天  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解