ASP.NET Core Blazor EditForm内置表单验证显示ValidationMessage
2024-10-12
36
Blazor 框架支持表单并提供内置的输入组件:
绑定到使用数据注释的模型的 EditForm 组件
内置输入组件
我们可以把Model绑定到EditForm的Model属性,然后使用Model属性的数据注释验证表单。
启用数据注释验证需要 DataAnnotationsValidator 组件。
可以使用ValidationSummary组件用于汇总所有验证消息,可以根据需要使用它。
下面是一个简单的表单验证代码示例:
ArticleEdit.razor
@using BlazorBlog.Data
@page "/manage/articles/edit"
<PageTitle>Edit article</PageTitle>
<EditForm Model="@request" OnValidSubmit="@HandleValidSubmit">
<DataAnnotationsValidator />
<ValidationSummary />
<input type="hidden" id="Id" />
<div class="row">
<div class="mb-3">
<label class="form-label" for="Title">Title</label>
<InputText class="form-control" id="Title" @bind-Value="request.Title" />
<ValidationMessage For="() => request.Title" />
</div>
<div class="col-lg-6 mb-3">
<label class="form-label" for="Status">Status</label>
<InputSelect class="form-select" id="Status" @bind-Value="request.Status">
<option value="">Choose...</option>
<option value="1">Pending</option>
<option value="2" >Approved</option>
<option value="3">Rejected</option>
</InputSelect>
<ValidationMessage For="() => request.Status" />
</div>
<div class="mb-3">
<label class="form-label" for="ArticleContent">ArticleContent</label>
<InputTextArea class="form-control" id="ArticleContent" @bind-Value="request.ArticleContent" />
<ValidationMessage For="() => request.ArticleContent" />
</div>
<div class="text-end">
<button type="submit" class="btn btn-primary btn-submit">
Submit
</button>
</div>
</div>
</EditForm>
@code {
public ArticleRequest request = new ArticleRequest();
protected void OnInitialized()
{
}
protected void HandleValidSubmit()
{
// ...
}
}
ArticleRequest.cs
using System.ComponentModel.DataAnnotations;
namespace BlazorBlog.Data
{
public class ArticleRequest
{
public int? Id { get; set; }
[Required]
[MaxLength(10, ErrorMessage = "最长10个字符")]
public string Title { get; set; } = null!;
[Required(ErrorMessage = "请输入文章正文")]
public string ArticleContent { get; set; } = null!;
public string? Description { get; set; }
[Required]
public int? Status { get; set; }
}
}
运行效果:
如图所示,我什么都没有填写,点击Submit按钮后,显示了自己配置的ErrorMessage,如果没有设置则显示默认的ErrorMessage。
EditForm 为处理表单提交提供了以下回调:
OnValidSubmit 可以在提交具有有效字段的窗体时分配要运行的事件处理程序。
OnInvalidSubmit 可以在提交具有无效字段的窗体时分配要运行的事件处理程序。
OnSubmit 可以分配要运行的事件处理程序,而不管表单字段的验证状态如何。
这里需要注意,如果我们需要使用内置的表单验证同时显示ValidationMessage的话, 我们需要使用OnValidSubmit处理提交事件。 如果使用OnSubmit的话,即使验证失败也不会显示ValidationMessage。
Blazor 框架提供了用于接收和验证用户输入的内置输入组件:
Input component | Rendered as |
InputCheckbox | <input type="checkbox"> |
InputDate<TValue> | <input type="date"> |
InputFile | <input type="file"> |
InputNumber<TValue> | <input type="number"> |
InputRadio<TValue> | <input type="radio"> |
InputRadioGroup<TValue> | Group of child InputRadio<TValue> |
InputSelect<TValue> | <select> |
InputText | <input> |
InputTextArea | <textarea> |
赞一波!
相关文章
- ASP.NET Core 中常用的内置中间件
- 用Blazor开发App应用可行吗?
- 前端开发有必要学习Blazor吗?
- .NET9在ASP.NET MVC有什么更新?
- ASP.NET MVC与Web Forms的区别
- 鸿蒙OpenHarmony系统可以运行跨平台的.NET Core吗?
- ASP.NET Core使用partial标签报错
- Blazor的N种渲染模式原理和常见问题说明
- Asp.Net Core进程内托管 和 进程外托管的区别
- ASP.NET Core实现多语言本地化Web应用程序
- PDFiumCore | .NET Core PDF 处理渲染库
- ASP.NET生成图片验证码
- .NET Blazor 2024年发展趋势
- asp.net母版页和内容页PageLoad顺序
- ASP.NET Core 2.1中的ActionResult<T>
- .NET Core 3.0创建一个单独的可执行文件
- 在ASP.NET Core 2.1中使用HttpClientFactory的3种方法
- .NET Core MVC应用程序创建教程
- .NET Core中的File和PhysicalFile
- .NET Core 读取配置文件方法
文章评论
评论问答