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