You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Blazor EditForm必填字段自定义验证提示信息?

Blazor中Required特性自定义错误提示不生效的解决办法

问题说明

在Blazor项目里使用EditForm和InputText组件做表单,部分文本框通过[Required]标记为必填项。其中有些字段同时配置了[StringLength]、[RegularExpression]特性,它们的自定义错误提示都能正常显示,但给[Required]设置ErrorMessage = "此项为必填项"后,仍显示默认提示“姓氏字段为必填项”,需要修改该提示信息。

组件代码示例

<EditForm Model=@newUser OnValidSubmit="HandleSubmit">
    <DataAnnotationsValidator />
    @*    <ValidationSummary/>*@

    <label for="userForename">名字:</label>
    <InputText id="userForename" @bind-Value="@newUser.Forename"></InputText>
    <ValidationMessage For="@(() => newUser.Forename)" />

    <label for="userSurname">姓氏:</label>
    <InputText id="userSurname" @bind-Value="@newUser.Surname"></InputText>
    <ValidationMessage For="@(() => newUser.Surname)" />

    <label for="userEmailAddress">邮箱地址:</label>
    <InputText id="userEmailAddress" @bind-Value="@newUser.EmailAddress"></InputText>
    <ValidationMessage For="@(() => newUser.EmailAddress)" />
        
    <button type="submit" class="btn-primary">添加</button>

</EditForm>

解决步骤

1. 检查模型类的Required特性配置

首先确认你的模型类(比如User类)中,对应字段的[Required]特性已正确设置自定义错误信息,示例如下:

public class User
{
    [Required(ErrorMessage = "此项为必填项")]
    public string Forename { get; set; }

    [Required(ErrorMessage = "此项为必填项")]
    public string Surname { get; set; }

    [Required(ErrorMessage = "此项为必填项")]
    [EmailAddress(ErrorMessage = "请输入有效的邮箱地址")]
    public string EmailAddress { get; set; }
}

如果模型中未给Required添加ErrorMessage参数,Blazor会自动生成默认提示文本,这是最常见的问题原因。

2. 避免重复的验证特性

不要给同一个字段添加多个[Required]特性,如下错误写法会导致自定义提示不生效:

// 错误示例:重复添加Required特性
[Required]
[Required(ErrorMessage = "此项为必填项")]
public string Surname { get; set; }

这种情况下会优先使用第一个无自定义提示的Required特性,覆盖你的自定义配置。

3. 手动刷新验证状态

若模型配置无误但提示仍未更新,可尝试手动触发验证状态刷新:

  • 在组件中注入EditContext,并调用NotifyValidationStateChanged()方法:
@inject EditContext EditContext

<EditForm Model=@newUser OnValidSubmit="HandleSubmit" EditContext=@EditContext>
    <!-- 组件内容保持不变 -->
</EditForm>

@code {
    private User newUser = new User();

    private void HandleSubmit()
    {
        // 提交逻辑
    }

    // 必要时调用此方法刷新验证状态
    private void RefreshValidation()
    {
        EditContext?.NotifyValidationStateChanged();
    }
}

4. 确认DataAnnotationsValidator已添加

组件中必须包含<DataAnnotationsValidator />,Blazor的表单验证依赖该组件启用数据注解验证,缺少它会导致自定义验证特性无法正常工作。

总结

大部分情况下,问题根源都是模型类中的[Required]特性未正确设置ErrorMessage参数,优先检查这一点。确认配置无误后,再排查重复特性、验证状态未刷新等情况。

内容的提问来源于stack exchange,提问作者Lisa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 18:05:29