ASP.NET?Core?MVC中Form?Tag?Helpers用法介紹
簡(jiǎn)介
我們已經(jīng)介紹過(guò)Tag Helpers以及一些最常用的Tag Helpers,也談到了緩存Tag Helpers。在這篇文章中,我們將討論表單Tag Helpers。
HTML或Web表單通過(guò)使用各種HTML元素用于收集來(lái)自用戶(hù)的輸入,如輸入框、復(fù)選框、單選按鈕、下拉列表等。使用 <form> 元素時(shí),我們通常使用POST請(qǐng)求。雖然也可以使用GET請(qǐng)求,不過(guò)GET請(qǐng)求建議提交于少量、非敏感的數(shù)據(jù)來(lái)獲取數(shù)據(jù)。
ASP.NET Core MVC提供了一些Form Tag Helpers,讓我們看看最重要的是什么。
Form Tag Helper
當(dāng)我們使用<form>元素時(shí),ASP.NET Core MVC會(huì)自動(dòng)添加防御CSRF攻擊保護(hù)措施;它通過(guò)生成隱藏的請(qǐng)求驗(yàn)證令牌以防止CSRF攻擊。
看一個(gè)簡(jiǎn)單的例子:
此代碼輸出的界面如下:
然而,這并不是全部,在幕后發(fā)生了什么:
請(qǐng)注意在HTTP Post操作方式中,RequestVerificationToken 與內(nèi)置的[ValidateAntiForgeryToken]
屬性一起工作,同時(shí),該請(qǐng)求方法會(huì)被標(biāo)記為post方式。
Form Tag Helper的還提供了asp-route-{ParameterName}屬性,其中參數(shù)名稱(chēng)為被添加到路由的值;并且還提供了@Html.BeginForm
和@Html.BeginRouteForm
另一種清晰的替代方式。
如果我們添加一個(gè)自定義路由:
并將表單修改為如下:
我們得到以下HTML:
它將執(zhí)行與剛才指定的 controller 和 action 方法。
這是使用舊的HTML Helpers語(yǔ)法:
@using (Html.BeginForm("Edit", "Categories")) { }
新的語(yǔ)法是:
<form asp-action="Edit" asp-controller="Categories">{ }
第一個(gè)可能看起來(lái)更短更好,但第二個(gè)更自然,對(duì)于設(shè)計(jì)師或一名JS開(kāi)發(fā)人員來(lái)說(shuō),在使用Angular、React的過(guò)程中,這將會(huì)更加自然。
Input Tag Helper
這一個(gè)很簡(jiǎn)單,它是@Html.EditorFor(m => m.Name)
的替代方式。
假設(shè)我們有一個(gè)具有 Name 屬性的視圖模型:
<input asp-for="Name" />`
會(huì)產(chǎn)生如下代碼:
<input type="text" id="Name" name="Name" />
Label Tag Helper
這一個(gè)也很簡(jiǎn)單,它是@Html.LabelFor(m => m.Name)
的替代方式。
它與輸入框Tag Helper配合使用:
<input asp-for="Name" /> <label asp-for="Name" />
與其它一樣,也具有智能感知功能,一旦您開(kāi)始鍵入,就會(huì)檢測(cè)屬性的名稱(chēng):
如果我們將 Display 特性應(yīng)用于 Name 屬性:
這是我們將獲得的HTML內(nèi)容:
<label for="Name">Category Name</label>
TextArea Tag Helper
這一個(gè)非常類(lèi)似于Input Tag Helper:
以下Razor代碼:
<textarea asp-for="Name"></textarea>`
我們將得到以下輸出:
Validation Message Tag Helper
我們使用Validation Tag Helper為我們的視圖模型的屬性顯示驗(yàn)證消息,使用方式也很簡(jiǎn)單:
<span asp-validation-for="Name"></span>
我們得到的HTML:
<span class="field-validation-valid" data-valmsg-for="Name" data-valmsg-replace="true"></span>
到此這篇關(guān)于ASP.NET Core MVC中Form Tag Helpers用法的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
讓Silverlight 2.0動(dòng)畫(huà)動(dòng)起來(lái)Making Silverlight 2.0 animation Start(
Microsoft Expression Blend 2 制作動(dòng)畫(huà)個(gè)人感覺(jué)倒像3DMAX 可以自動(dòng)捕捉關(guān)鍵幀2008-11-11Asp.Net 無(wú)刷新文件上傳并顯示進(jìn)度條的實(shí)現(xiàn)方法及思路
這篇文章詳細(xì)介紹了無(wú)刷新文件上傳并顯示進(jìn)度條的思路和代碼,有需要的朋友可以參考一下2013-06-06Entity Framework使用Code First模式管理數(shù)據(jù)庫(kù)
本文詳細(xì)講解了Entity Framework使用Code First模式管理數(shù)據(jù)庫(kù)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03IIS實(shí)現(xiàn)反向代理時(shí)Cookie域的設(shè)置方法
這篇文章主要給大家介紹了關(guān)于IIS實(shí)現(xiàn)反向代理時(shí)Cookie域的設(shè)置方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-04-04Entity Framework Core中執(zhí)行SQL語(yǔ)句和存儲(chǔ)過(guò)程的方法介紹
這篇文章介紹了Entity Framework Core中執(zhí)行SQL語(yǔ)句和存儲(chǔ)過(guò)程的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02ASP.Net Core(C#)創(chuàng)建Web站點(diǎn)的實(shí)現(xiàn)
本文主要介紹了ASP.Net Core(C#)創(chuàng)建Web站點(diǎn)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07asp.net 獨(dú)立Discuz頭像編輯模塊分離打包
在Discuz產(chǎn)品系列(包括UCenter、UCHome)中有一個(gè)flash頭像上傳編輯的功能比較好用,和之前自己用js實(shí)現(xiàn)的照片在線(xiàn)編輯插件比較像,于是想將它獨(dú)立出來(lái),一方面可以學(xué)習(xí)研究,另一方面有機(jī)會(huì)可以在項(xiàng)目中使用(這里主要是指Asp.Net程序,php的與之類(lèi)似)。2011-06-06讀取XML并綁定至RadioButtonList實(shí)現(xiàn)思路及演示動(dòng)畫(huà)
讀取XML的文檔,可以使用System.Data.DataSet類(lèi)別中的ReadXml()方法,在aspx網(wǎng)頁(yè)上拉一個(gè)RadioButtonList控件,用來(lái)顯示XML的數(shù)據(jù),接下來(lái),用DataSet去讀取剛才寫(xiě)好的獲取XML文件的屬性,即可完成2013-01-01ASP.NET中GridView和Repeater重復(fù)數(shù)據(jù)如何合并
這篇文章主要介紹了ASP.NET中GridView和Repeater重復(fù)數(shù)據(jù)合并的方法,感興趣的小伙伴們可以參考一下2016-08-08