欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-05-26 09:43:12
在上一篇的ef之db first中,存在以下的两个问题: 1. 添加/编辑页面显示的是属性名称,而非自定义的名称(如:姓名、专业...) 2. 添加/编辑时没有加入验证...

在上一篇的ef之db first中,存在以下的两个问题:

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

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

3. 数据展示使用分页

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

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

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

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

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; }
 }
}

此时前台访问并提交:

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

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

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

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

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

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 MVC使用PagedList.MVC实现分页效果

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