在上一篇的EF之DB First中,存在以下的两个问题:
1. 添加/编辑页面显示的是属性名称,而非自定义的名称(如:姓名、专业...)
2. 添加/编辑时没有加入验证
3. 数据展示使用分页
@Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" }) 是显示属性Name的“标签”,如果没有指定Display特性,则直接显示属性名Name
通用数据库生成的实体模型文件与代码一般不直接修改(防止下次生成时覆盖),这里要使用验证与实体分离
添加一个验证类,代码如下 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
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的控制器方法:
1
2
3
4
5
6
|
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)); } |
视图代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
@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})) |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。