查看: 459|回复: 0

[.NET开发] asp.net MVC使用PagedList.MVC实现分页效果

发表于 2018-1-2 08:00:00

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

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

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

3. 数据展示使用分页

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

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

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

  1. using System.ComponentModel.DataAnnotations;
  2. namespace Zhong.Web.Models
  3. {
  4. [MetadataType(typeof(T_StudentValidateInfo))]
  5. public partial class T_Student
  6. {
  7. }
  8. public class T_StudentValidateInfo
  9. {
  10. [Display(Name="姓名")]
  11. [Required(ErrorMessage ="姓名不能为空")]
  12. [StringLength(10,ErrorMessage ="姓名长度超出限制")]
  13. public string Name { get; set; }
  14. [Display(Name="学号")]
  15. [Required]
  16. [StringLength(20,MinimumLength =10,ErrorMessage ="长度为10-20")]
  17. public string StudentId { get; set; }
  18. }
  19. }
复制代码

此时前台访问并提交:

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

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

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

  1. public ActionResult List(int page = 1)
  2. {
  3. //var students = entities.T_Student.OrderBy(s => s.Id).Skip((page - 1) * 2).Take(2);
  4. var students = entities.T_Student.OrderBy(s => s.Id);
  5. return View(students.ToPagedList(page, 2));
  6. }
复制代码

视图代码如下:

  1. @using PagedList.Mvc
  2. @model PagedList.IPagedList<Zhong.Web.Models.T_Student>
  3. @{
  4. ViewBag.Title = "List";
  5. }
  6. <h2>List</h2>
  7. <p>
  8. @Html.ActionLink("Create New", "Create")
  9. </p>
  10. <table class="table">
  11. <tr>
  12. <th>
  13. 姓名
  14. </th>
  15. <th>
  16. 学号
  17. </th>
  18. <th>
  19. 专业
  20. </th>
  21. <th></th>
  22. </tr>
  23. @foreach (var item in Model) {
  24. <tr>
  25. <td>
  26. @Html.DisplayFor(modelItem => item.Name)
  27. </td>
  28. <td>
  29. @Html.DisplayFor(modelItem => item.StudentId)
  30. </td>
  31. <td>
  32. @Html.DisplayFor(modelItem => item.T_Major.Name)
  33. </td>
  34. <td>
  35. @Html.ActionLink("Edit", "Edit", new { id=item.Id }) |
  36. @Html.ActionLink("Details", "Details", new { id=item.Id }) |
  37. @Html.ActionLink("Delete", "Delete", new { id=item.Id })
  38. </td>
  39. </tr>
  40. }
  41. </table>
  42. @Html.PagedListPager(Model,page => Url.Action("List",new { page}))
复制代码

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



回复

使用道具 举报