1、弥补上一篇的两个bug
2、介绍与使用DATA ANNOTAIONShtml
上一篇有两个bug,分别是建立新学生后ID为0,刷新建立后信息界面发现会反复提交其数据,这是为啥
注意上面这个url地址/Home/Create
这么说就是咱们还处于Create建立的页面,并无跳转到Detail界面,并且Create.cshtml页面中的数据模板是StudentCreateViewModel,没有Id属性。因此为零
这怎么作?
在Homeconreoller中
这么作会返回的是Detail这个url,其中id是newstudent.Id
在EfCoreRepository中应当反回的是model
由于数据库保存的是model,因此也只会对model中的Id属性进行自增,若是返回的是student的话Id会是零
ok,bug解决git
简单说下用于验证数据
github
如今咱们先对Create视图改变下web
@using TutorialStudy.Model @model TutorialStudy.Views.ViewModel.StudentCreateViewModel <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>添加学生</title> </head> <body> <form method="post"> <h1>建立一个学生</h1> <div> <label asp-for="FirstName"></label> <input asp-for="FirstName"/> </div> <div> <label asp-for="LastName"></label> <input asp-for="LastName" /> </div> <div> <label asp-for="BirthDate"></label> <input asp-for="BirthDate" type="date" /> </div> <div> <label asp-for="Gender"></label> <select asp-for="Gender" asp-items="Html.GetEnumSelectList<Gender>()"></select> </div> <button type="submit">添加</button> </form> </body> </html>
运行看看
在这里你能够不输入什么直接保存,就是空值,也会保存到数据库中,接下来咱们要面对这个问题数据库
打开咱们的viewmodel中的StudentCreateViewModelmvc
using System; using System.ComponentModel.DataAnnotations; using TutorialStudy.Model; namespace TutorialStudy.Views.ViewModel { public class StudentCreateViewModel { //Required指定须要数据字段值 [Display(Name = "姓"),Required,] public string LastName { get; set; } //MaxLength字符最大长度 [Display(Name = "名"),Required,MaxLength(10)] public string FirstName { get; set; } [Display(Name = "性别")] public Gender Gender { get; set; } [Display(Name = "出生日期")] public DateTime BirthDate { get; set; } } }
这就是对数据添加约束还有取名
然而这样作只有Name有效会输出到界面,然而咱们还要判断数据满不知足条件,
在HoemController中
这句话改成这样,会发现咱们运行后输入空值什么都没有发生,只是感受刷新了一下
一样也没有录入数据库
还有上面这个问题
上面那个我记得是是夸大请求伪造
Httppost常出现,为避免
RequestVerificationTokensvg
修改create.cshtml代码post
@using TutorialStudy.Model @model TutorialStudy.Views.ViewModel.StudentCreateViewModel <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>添加学生</title> </head> <body> <form method="post"> <h1>建立一个学生</h1> <div> <label asp-for="FirstName"></label> <input asp-for="FirstName"/> <span asp-validation-for="FirstName"></span> </div> <div> <label asp-for="LastName"></label> <input asp-for="LastName" /> <span asp-validation-for="LastName"></span> </div> <div> <label asp-for="BirthDate"></label> <input asp-for="BirthDate" type="date" /> <span asp-validation-for="BirthDate"></span> </div> <div> <label asp-for="Gender"></label> <select asp-for="Gender" asp-items="Html.GetEnumSelectList<Gender>()"></select> <span asp-validation-for="Gender"></span> </div> <button type="submit">添加</button> </form> </body> </html>
运行,直接什么都不填,直接添加
这样就会有提示
ok!
github地址
https://github.com/1045683477/.net-core-mvc-intermediateui