經過action的參數傳入一個model
經過input的name屬性和model屬性對應上
一般是使用Http post去作
快速建立了這個Action
這個Action很簡單咱們只須要返回View就能夠了
在Home下建立Create.cshtml
Create頁面
先聲明小寫的model的數據類型
Action能夠不用寫,由於提交數據就是提交的本頁面
文本框的name值和model的屬性值一一對應的關係
TabHelper的寫法,上面已經聲明瞭model的類型,這裏的asp-for就是for的大寫的model
日期類型的問題,
先測試一下
tagHelper自動知道日期的類型,他就會生成對應類型的input
html
性別能夠用下拉選項,這裏先創建一個枚舉類
修改實體類
asp-item須要傳入的類型數組
能夠先使用htmlHelper先生成一個list,再用asp-items
把Gender的,命名空間引進來
在tagHelper裏面htmlHelper的前面的@符號是能夠去掉的。裏面直接識別了C#的語法
指明日期的類型:是date類型
自動渲染成了日期選擇框
自動出來下拉
生成的DOM
有個隱藏域,值是一段token。它是用來驗證請求的。防止跨站請求僞造。保證提交的form是從個人網站裏面的頁面內提交的,而不是一些惡意網站僞造的請求
瀏覽器
先測試接收當前的Student的實體對象
改寫成ViewModel的形式
在Respository裏面建立Add方法的接口
Ctrl+F12 鼠標選中IRespository進去實現類裏面
先獲取到最大id後再把加入數組內
修改返回類型
接口的返回類型也改一下
添加完成後跳轉到詳情頁面
Detail詳情頁
運行效果
返回首頁後,可是剛纔添加的數據沒有顯示在列表內
註冊容器的時候,選擇的聲明週期是Scope,每次http請求都會建立一個新的實例,因此在跳回到列表頁面的時候,又是一個新的實例
改爲單例模式,就不會有問題了
再添加一個
剛post玩以後,點擊刷新頁面。瀏覽器會把剛纔這個表單提交再提交一遍。
點擊刷新後,又post添加了一條數據
連續刷了兩次頁面就看到有三條重複的數據
post以後,沖洗重定向到另一個頁面,在新的頁面在get獲取新的數據
點擊刷新由於這裏的地址沒有變化,因此仍是走的那個post
添加完成以後對這個地址作一個重定向
這裏使用nameof,這個值實際上就是Detai這個字符串,這樣寫比較利於重構
把前面這裏也改爲nameof的形式
保存以後頁面跳轉
post