ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 08. 輸入Model和防止重複Post

經過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是從個人網站裏面的頁面內提交的,而不是一些惡意網站僞造的請求
瀏覽器

接收Form數據


先測試接收當前的Student的實體對象

改寫成ViewModel的形式




在Respository裏面建立Add方法的接口

Ctrl+F12 鼠標選中IRespository進去實現類裏面

先獲取到最大id後再把加入數組內


修改返回類型

接口的返回類型也改一下

添加完成後跳轉到詳情頁面

Detail詳情頁

運行效果




返回首頁後,可是剛纔添加的數據沒有顯示在列表內

註冊容器的時候,選擇的聲明週期是Scope,每次http請求都會建立一個新的實例,因此在跳回到列表頁面的時候,又是一個新的實例

改爲單例模式,就不會有問題了




再添加一個

剛post玩以後,點擊刷新頁面。瀏覽器會把剛纔這個表單提交再提交一遍。

點擊刷新後,又post添加了一條數據

連續刷了兩次頁面就看到有三條重複的數據

post以後,沖洗重定向到另一個頁面,在新的頁面在get獲取新的數據


點擊刷新由於這裏的地址沒有變化,因此仍是走的那個post

添加完成以後對這個地址作一個重定向

這裏使用nameof,這個值實際上就是Detai這個字符串,這樣寫比較利於重構



把前面這裏也改爲nameof的形式

保存以後頁面跳轉

 post

相關文章
相關標籤/搜索