Blazor University (31)表單 —— 驗證

原文鏈接:https://blazor-university.com/forms/validation/

驗證

源代碼[1]

DataAnnotationsValidator 是 Blazor 中的標準驗證器類型。在 EditForm 組件中添加此組件將啟用基于 System.ComponentModel.DataAnnotations.ValidationAttribute 的 .NET 屬性的表單驗證。

首先,我們將創建一個簡短的示例,然后我們將了解幕后發生的事情。首先,創建一個我們可以編輯的模型,并用一些數據注釋裝飾它的屬性以進行驗證。

public?class?Person
{[Required]public?string?Name?{?get;?set;?}[Range(18,?80,?ErrorMessage?=?"Age?must?be?between?18?and?80.")]public?int?Age?{?get;?set;?}
}
  • 第 3 行指定 Name 屬性不能為 null 或為空。

  • 第 5 行為 Age 屬性指定了一個有效的值范圍(從 18 到 80),并且還提供了一個合適的錯誤消息來顯示給用戶。

添加驗證

在默認 Blazor 應用中編輯 Index.razor 頁面,并提供一些標記來編輯 Person 的實例。

<EditForm?Model=@Person><div?class="form-group"><label?for="Name">Name</label><InputText?@bind-Value=Person.Name?class="form-control"?id="Name"?/></div><div?class="form-group"><label?for="Age">Age</label><InputNumber?@bind-Value=Person.Age?class="form-control"?id="Age"?/></div><input?type="submit"?class="btn?btn-primary"?value="Save"/>
</EditForm>@code?{Person?Person?=?new?Person();
}

現在運行應用程序將導致向用戶顯示一個不驗證其輸入的表單。為了確保表單得到驗證,我們必須指定一個驗證機制。在 EditForm 組件內添加一個 DataAnnotationsValidator 組件。

<EditForm?Model=@Person><DataAnnotationsValidator/><div?class="form-group"><label?for="Name">Name</label><InputText?@bind-Value=Person.Name?class="form-control"?id="Name"?/></div><div?class="form-group"><label?for="Age">Age</label><InputNumber?@bind-Value=Person.Age?class="form-control"?id="Age"?/></div><input?type="submit"?class="btn?btn-primary"?value="Save"/>
</EditForm>

運行應用程序并單擊“保存”按鈕將更新用戶界面,以提供用戶輸入中存在錯誤的視覺指示。

18baa61d83e49c9da519f56fa0857175.png

顯示驗證錯誤消息

可以通過兩種方式向用戶顯示驗證錯誤消息。我們可以添加一個 ValidationSummary 來顯示表單中所有錯誤的完整列表。我們還可以使用 ValidationMessage 組件來顯示表單上特定輸入的錯誤消息。這些組件不是相互排斥的,因此可以同時使用它們。

ValidationSummary 組件可以簡單地放入我們標記中的 EditForm 中;根本不需要額外的參數。

5c53168947d74eb62faf731626a3db2d.png

由于 ValidationMessage 組件顯示單個字段的錯誤消息,它要求我們指定字段的標識。為了確保我們的參數值在重構后保持正確(例如,當我們重構 Person 類的屬性名稱時)Blazor 要求我們在識別字段時指定一個表達式。名為 For 的參數在 ValidationMessage 上定義如下:

[Parameter]
public?Expression<Func<T>>?For?{?get;?set;?}

這意味著我們應該使用 lambda 表達式來指定字段的標識,該表達式可以“雙引號”或包裹在 @(...)

  • 雙引號

    <ValidationMessage?For="()?=>?Person.Name"/>
  • Razor 表達式

    <ValidationMessage?For=@(?()?=>?Person.Name?)/>

兩種形式是等價的。帶引號的形式更容易閱讀,而 razor 表達式使其他開發人員更清楚我們定義的是表達式而不是字符串。

@page?"/"
@using?Models<EditForm?Model=@Person><DataAnnotationsValidator/><ValidationSummary/><div?class="form-group"><label?for="Name">Name</label><InputText?@bind-Value=Person.Name?class="form-control"?id="Name"?/><ValidationMessage?For="()?=>?Person.Name"/></div><div?class="form-group"><label?for="Age">Age</label><InputNumber?@bind-Value=Person.Age?class="form-control"?id="Age"?/><ValidationMessage?For=@(()?=>?Person.Age)?/></div><input?type="submit"?class="btn?btn-primary"?value="Save"/>
</EditForm>@code?{Person?Person?=?new?Person();
}

7e1bcd13e03a8f4116a447d466aa65d6.png

參考資料

[1]

源代碼: https://github.com/mrpmorris/blazor-university/tree/master/src/Forms/ValidatingUserInput

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/285764.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/285764.shtml
英文地址,請注明出處:http://en.pswp.cn/news/285764.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CSDN,CNBLOGS博客文章一鍵轉載插件 終于更新了!

之前&#xff0c;Shawn Chou等朋友一直建議插件支持cnblogs文章轉載&#xff0c;但一直沒時間修改插件&#xff0c;今天晚上抽時間將插件進行了升級&#xff0c;可以支持 CSDN,CNBLOGS博客文章的一鍵轉載。時間倉促&#xff0c;難免有各種問題&#xff0c;歡迎提出建議&#xf…

ROS2_Control官方資料+運動控制

Getting Started — ROS2_Control: Rolling Dec 2023 documentation Getting Started Edit on GitHub Youre reading the documentation for a development version. For the latest released version, please have a look at Iron. Getting Started? Installation? Binar…

三、教你搞懂漸變堆疊面積圖《手把手教你 ECharts 數據可視化詳解》

注&#xff1a;本系列教程需要對應 JavaScript 、html、css 基礎&#xff0c;否則將會導致閱讀時困難&#xff0c;本教程將會從 ECharts 的官方示例出發&#xff0c;詳解每一個示例實現&#xff0c;從中學習 ECharts 。 ECharts 官方示例&#xff1a;https://echarts.apache.o…

C語言試題八十二之輸入小寫字母,把小寫字母轉換成大寫字母。

??個人主頁:個人主頁 ??系列專欄:C語言試題200例目錄 ??推薦一款刷算法、筆試、面經、拿大公司offer神器 ?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 輸入小寫字…

Serv-U服務器的管理3

&#xff18;&#xff0e;編輯&#xff29;&#xff30;訪問規則對于某些擾亂服務器秩序但又不方便刪除其賬戶的用戶&#xff0c;可以利用“編輯&#xff29;&#xff30;訪問規則”允許或阻止特定的&#xff29;&#xff30;訪問。&#xff33;&#xff45;&#xff52;&#…

【ArcGIS風暴】什么是點云?什么是Las數據集?一篇文章告訴你點云數據的奧秘

攝影測量Pix4d等軟件,或激光雷達數據一般都是LAS格式的點云數據,有很大的適用范圍和優點,那么,到底什么是LAS數據集呢,一文告訴你LAS數據集的來龍去脈。 擴展閱讀: 什么是點云?什么是Las數據集?一篇文章告訴你點云數據的奧秘 ArcGIS+CASS點云(.las)數據生成等高線方法案…

試用了多款報表工具,終于找到了基于.Net 6開發的一個了

Part1前言上一個月有一個項目需要用到數據分析&#xff0c;將老板感興趣的數據給他整理成一個面板&#xff0c;方便他實時查看&#xff0c;于是自己了解到了BI,當時我們項目就用了metabase&#xff0c;metabase是一款開源的BI分析工具&#xff0c;開發語言clojureReact為主。就…

4種CSS文字豎排方法

2019獨角獸企業重金招聘Python工程師標準>>> 有時候&#xff0c;我們需要對網頁某個區域的文字豎排&#xff0c;豎向排列&#xff0c;橫向的當然大家都見慣了&#xff0c;對于豎排&#xff0c;一時間找不到思路了&#xff0c;呵呵&#xff0c;其實和橫排一樣簡單&am…

知道這20個正則表達式,能讓你少寫1,000行代碼

正則表達式&#xff0c;一個十分古老而又強大的文本處理工具&#xff0c;僅僅用一段非常簡短的表達式語句&#xff0c;便能夠快速實現一個非常復雜的業務邏輯。熟練地掌握正則表達式的話&#xff0c;能夠使你的開發效率得到極大的提升。 正則表達式經常被用于字段或任意字符串的…

Android之SwipeRefreshLayout嵌套RecyclerView遇到的坑

1 、需求 RecyclerView多布局里面加入SwipeRefreshLayout實現下拉刷新 2、關鍵代碼 <androidx.swiperefreshlayout.widget.SwipeRefreshLayoutandroid:id="@+id/mainRefresh"android:layout_width="match_parent"android:layout_height="0dp"…

TCP連接出現大量TIME_WAIT的解決辦法

一個TCP/IP連接斷開以后&#xff0c;會通過TIME_WAIT的狀態保留一段時間&#xff0c;時間過了才會釋放這個端口&#xff0c;當端口接受的頻繁請求數量過多的時候&#xff0c;就會產生大量的TIME_WAIT狀態的連接&#xff0c;這些連接占著端口&#xff0c;會消耗大量的資源。面對…

【ArcGIS風暴】ArcGIS10.6創建LAS數據集的兩種方法并加載點云數據

文章目錄 1. 使用上下文菜單創建 LAS 數據集2. 使用地理處理工具創建 LAS 數據集3. 顯示LAS數據集LAS 數據集是位于文件夾中的獨立文件,并且引用 LAS 格式的激光雷達數據和用于定義表面特征的可選表面約束要素。可使用創建 LAS 數據集工具或 ArcCatalog 中文件夾的上下文菜單快…

關于建立北京市專業技術人員職業資格與職稱對應關系的通知

原文地址 http://www.bjrbj.gov.cn/xxgk/gsgg/201906/t20190605_82857.html 附件 北京市專業技術人員職業資格與職稱對應表 &#xff08;46項&#xff09; 一、準入類職業資格 序號 資格名稱 可聘專業技術職務 1 注冊消防工程師 一級注冊消防工程師&#xff1a;工程師 二…

基于.NetCore開發博客項目 StarBlog - (12) Razor頁面動態編譯

系列文章基于.NetCore開發博客項目 StarBlog - (1) 為什么需要自己寫一個博客&#xff1f;基于.NetCore開發博客項目 StarBlog - (2) 環境準備和創建項目基于.NetCore開發博客項目 StarBlog - (3) 模型設計基于.NetCore開發博客項目 StarBlog - (4) markdown博客批量導入基于.N…

C語言試題八十三之輸出左下三角形九九乘法表

??個人主頁:個人主頁 ??系列專欄:C語言試題200例目錄 ??推薦一款刷算法、筆試、面經、拿大公司offer神器 ?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 輸出左下三…

Android SDK目錄結構

1、add-ons這里面保存著附加庫&#xff0c;比如GoogleMaps&#xff0c;當然你如果安裝了OphoneSDK&#xff0c;這里也會有一些類庫在里面。 2、docs這里面是Android的幫助文檔&#xff0c;Android開發所有API都在里面。 3、platforms是每個平臺的SDK真正的文件&#xff0c;里面…

【Pix4d精品教程】Pix4d項目空三結果精度評估完整解決方案

《無人機航空攝影測量精品教程》合集目錄(Pix4d、CC、EPS、PhotoScan、Inpho) 文章目錄 一、單體項目評估二、整體項目評估在航測項目內業工作中,不管是垂直攝影,還是傾斜攝影,最核心的部分是空三加密,一個很重要的基礎是共線方程。空三結果的精度是航測的基本要求,也會…

2016 10 26考試 NOIP模擬賽 雜題

Time 7&#xff1a;50 AM -> 11&#xff1a;15 AM 感覺今天考完后&#xff0c;我的內心是崩潰的 試題考試包 T1&#xff1a; 首先看起來是個貪心&#xff0c;然而&#xff0c;然而&#xff0c;看到那個100%數據為n < 2000整個人就虛了&#xff0c;發呆接近兩小時后意識到…

2016 CCPC 杭州

A - ArcSofts Office Rearrangement 均分石子。 好像怎么分答案都一樣&#xff0c;于是模擬一遍。 #include <bits/stdc.h>using namespace std; typedef long long ll;template<typename T> inline void read(T &x){ x0;T f1;char ch;do{chgetchar();if(ch-)f…

[轉]RxHttp 一條鏈發送請求,新一代Http請求神器(一)

簡介 RxHttp是基于OkHttp的二次封裝&#xff0c;并于RxJava做到無縫銜接&#xff0c;一條鏈就能發送一個完整的請求。主要功能如下&#xff1a; 支持Get、Post、Put、Delete等任意請求方式&#xff0c;可自定義請求方式支持Json、DOM等任意數據解析方式&#xff0c;可自定義數據…