網站首頁 編程語言 正文
Blazor 提供一組輸入組件。 輸入組件會將綁定字段數據處理到模型,并在提交窗體時驗證用戶輸入。
下表顯示了可用的輸入組件:
EditForm
EditForm 組件通過 EditContext 包裝這些輸入組件并協調驗證過程。 創建 EditForm 時,可以使用 Model 參數指
定要綁定到的模型實例。 驗證通常是使用數據批注完成的,并且可以進行擴展。 若要啟用基于數據批注的驗證,請
將 DataAnnotationsValidator 組件添加為 EditForm 的子組件。 EditForm 組件提供了一個用于處理有效(
OnValidSubmit )和無效( OnInvalidSubmit )提交的方便事件。 還有一個更通用的 OnSubmit 事件,可讓你自行觸發
和處理驗證。若要顯示驗證錯誤摘要,請使用 ValidationSummary 組件。
DataAnnotationsValidator
DataAnnotationsValidator 組件使用數據注釋將驗證支持附加到級聯的 EditContext。
- 當用戶從某個字段中跳出時,將執行字段驗證。 在字段驗證期間,DataAnnotationsValidator 組件將報告的所有驗證結果與該字段相關聯。
- 當用戶提交窗體時,將執行模型驗證。 在模型驗證期間,DataAnnotationsValidator 組件嘗試根據驗證結果報告的成員名稱來確定字段。 與單個成員無關的驗證結果將與模型而不是字段相關聯。
ValidationSummary
ValidationSummary 組件用于匯總所有驗證消息。
驗證
下面示例演示一個EditForm驗證Model參數 (為了便于測試,這里將實體模型寫在了@code { } 當中)。
- 在@code{} 當中,創建一個 Student類型,提供Code與Name屬性
- 在頁面中定義EditForm, 綁定Model 與驗證提交的方法HandleValidSubmit
- EditForm中定義兩個InputText用于接受輸入內容
- button按鈕用于提交整個模型的數據
@page "/" @using Microsoft.AspNetCore.Components.Forms <EditForm Model="@student" OnValidSubmit="HandleValidSubmit"> <DataAnnotationsValidator /> <ValidationSummary /> <InputText @bind-Value="@student.Code" /> <InputText @bind-Value="@student.Name" /> <button type="submit">submit</button> </EditForm> @code { @using System.ComponentModel.DataAnnotations; private Student student = new Student(); private void HandleValidSubmit() { // Save the data } public class Student { [Required(AllowEmptyStrings = false, ErrorMessage = "必填項!")] public string Name { get; set; } [StringLength(2, ErrorMessage = "超出規定長度!")] public string Code { get; set; } } }
- 錯誤效果
若要顯示驗證錯誤摘要,請使用 ValidationSummary 組件。 若要顯示特定輸入字段的驗證消息,請使用ValidationMessage 組件,并為指向相應模型成員的 For 參數指定 lambda 表達式。
基于上面的進行改造,如下所示。 (如果只是針對每個字段進行驗證, 則無需在EditForm子集添加 ValidationSummary)
<EditForm Model="@student" OnValidSubmit="HandleValidSubmit"> <DataAnnotationsValidator /> @*<ValidationSummary />*@ <InputText @bind-Value="@student.Code" /> <ValidationMessage For="()=>student.Code" /> <InputText @bind-Value="@student.Name" /> <ValidationMessage For="()=>student.Name" /> <button type="submit">submit</button> </EditForm>
- 錯誤效果
嵌套驗證
對于上面的單個實體驗證,可以按照上面的做法進行, 但是考慮到實體中還包含其他類型的對象需要驗證。
官方文檔解釋: 若要驗證綁定模型的整個對象圖(包括集合類型和復雜類型的屬性),請使用試驗性 Microsoft.AspNetCore.Components.DataAnnotations.Validation 包
安裝NuGet包
Install-Package Microsoft.AspNetCore.Components.DataAnnotations.Validation
實驗
- 創建測試嵌套類型Student /Child
- EditForm子集添加 ObjectGraphDataAnnotationsValidator
- 改造后完整代碼如下所示:
@page "/" <EditForm Model="@student" OnValidSubmit="HandleValidSubmit"> <ObjectGraphDataAnnotationsValidator /> <InputText @bind-Value="@student.Child.Code" /> <ValidationMessage For="()=>student.Child.Code" /> <InputText @bind-Value="@student.Child.Name" /> <ValidationMessage For="()=>student.Child.Name" /> <button type="submit">submit</button> </EditForm> @code { @using System.ComponentModel.DataAnnotations; private Student student = new Student(); private void HandleValidSubmit() { // Save the data } public class Student { [ValidateComplexType] public Child Child { get; set; } = new Child(); } public class Child { [Required(AllowEmptyStrings = false, ErrorMessage = "必填項!")] public string Name { get; set; } [StringLength(2, ErrorMessage = "超出規定長度!")] public string Code { get; set; } } }
注意:?子集必須保證為實例, 否則會報異常提示。 如上: =new Child();
- 測試效果:
原文鏈接:https://www.cnblogs.com/zh7791/p/12750715.html
相關推薦
- 2022-09-03 ahooks控制時機的hook實現方法_React
- 2022-05-31 postman批量執行接口測試的圖文步驟_其它綜合
- 2022-07-24 docker搭建Zookeeper集群的方法步驟_docker
- 2022-11-16 python3中requests庫重定向獲取URL_python
- 2023-06-16 C語言中的運算符優先級和結合性一覽表_C 語言
- 2023-07-25 使用EasyExcel實現Excel的導入導出
- 2022-10-31 Kotlin函數式編程超詳細介紹_Android
- 2022-09-06 Python的functools模塊使用及說明_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支