Blazor入手教程(七)表單
Blazor為表單元素定義了一些內置組件
除此之外還有EditForm組件搭配起來十分好用
EditForm 提供了一系列數據驗證的屬性/方法,這樣我們不用自己再去實現了。
屬性/方法名 |
說明 |
Modal |
表單實體模型,必填 |
OnValidSubmit/OnInvalidSubmit |
提交表單時,驗證通過/未通過 的回調函數 |
OnSubmit |
提交表單時的回調函數,和上面的兩個屬於“或”的關系, 使用了OnValidSubmit/OnInvalidSubmit就不能再使用OnSubmit。同理,使用了OnSubmit就不能使用OnValidSubmit/OnInvalidSubmit。 OnSubmit可以用來做一些自定義的驗證 |
DataAnnotationsValidator
|
啟用數據注解驗證,就是特性驗證。 |
ValidationSummary |
驗證結果摘要。驗證不合法時,會在表單的頂部用html標簽顯示具體錯誤。也是繼承自ComponentBase的一種組件 |
模型驗證數據注解
驗證結果摘要ValidationSummary
Blazor提供的驗證能應對絕大多數場景,如果有特殊的場景,你也可以自定義實現一些驗證。
相關代碼:
@page "/FormSample" @using System.ComponentModel.DataAnnotations; <h3>表單</h3> <p>@stu.ToString()</p> <EditForm Model="@stu" OnValidSubmit="onValidSubmit" OnInvalidSubmit="onInvalidSubmit"> <DataAnnotationsValidator></DataAnnotationsValidator> <ValidationSummary></ValidationSummary> <div class="form-inline"> 姓名:<InputText @bind-Value="stu.name"></InputText> </div> <div class="form-inline"> 年齡: </div> <div class="form-inline"> 生日:<InputDate @bind-Value="stu.birthday"></InputDate> </div> <div class="form-inline"> 是否婚配: <InputCheckbox @bind-Value="stu.ismarried"></InputCheckbox> </div> <div class="form-inline"> 現居城市: <InputSelect @bind-Value="stu.city"> <option value="北京">北京</option> <option value="上海">上海</option> <option value="廣州">廣州</option> <option value="深圳">深圳</option> </InputSelect> </div> <button type="submit">OK</button> </EditForm> @code { public class student { [Required] [MaxLength(length:10, ErrorMessage ="名字最大長度不能超過10位")] public string name { get; set; } = "小爵"; //姓名 [Range(18,45,ErrorMessage ="年齡必須在18-45歲之間")] public int age { get; set; } = 28; //年齡 public DateTime birthday { get; set; } = System.DateTime.Now;//生日 public string city { get; set; } = "北京"; //所在城市 public bool ismarried { get; set; } = false; //是否婚配 public override string ToString() { return $"姓名:{name},年齡:{age},生日:{birthday},城市:{city},是否婚配:{ismarried}"; } } public student stu = new student() { }; private EditContext editContext; protected override void OnInitialized() { editContext = new EditContext(stu); } public void onSubmit( ) { Console.WriteLine("on onSubmit"); } public void onValidSubmit( ) { Console.WriteLine("on onValidSubmit"); } public void onInvalidSubmit( ) { Console.WriteLine(" onInvalidSubmit"); } }