C# 仅在单击字段后启用所需的属性验证

C# 仅在单击字段后启用所需的属性验证,c#,asp.net,razor,blazor,.net-core-3.1,C#,Asp.net,Razor,Blazor,.net Core 3.1,如果我具有以下viemodel属性: public class ExampleViewModel { [Required(ErrorMessage = "The email field is required.")] [EmailAddress(ErrorMessage ="Please enter a valid email address")] public string Email { get; set; } [Req

如果我具有以下viemodel属性:

public class ExampleViewModel
{
    [Required(ErrorMessage = "The email field is required.")]
    [EmailAddress(ErrorMessage ="Please enter a valid email address")]
    public string Email { get; set; }
    [Required(ErrorMessage = "The first name field is required.")]
    [RegularExpression("^[a-zA-Z\\-]+$", ErrorMessage="Please enter a valid name")]
    public string Forename { get; set; }
    [Required(ErrorMessage = "The last name field is required.")]
    [RegularExpression("^[a-zA-Z\\-]+$", ErrorMessage = "Please enter a valid name")]
    public string Surname { get; set; }
}
那么,如何仅在单击字段并将其从中移出后才在前端启用必填字段

当前,错误消息会直接呈现给查看者:

前端razor页面使用blazorise验证,该验证仅在所有字段都已填充时进行验证:

<Form method="post">
<Validations Mode="ValidationMode.Auto" Model="@ExampleViewModel" ValidatedAll="IsInvalid">
<Validation>
    <Blazorise.Field>
        <Blazorise.FieldLabel Class="is-bold">Email address</Blazorise.FieldLabel>
        <Blazorise.TextEdit Placeholder="Enter email" @bind-Text="@ContactDetails.Email" MaxLength=40>
            <Feedback>
                <ValidationError />
            </Feedback>
        </Blazorise.TextEdit>
    </Blazorise.Field>
</Validation>
<Row>
    <Blazorise.Title Size="10">Your Details</Blazorise.Title>
</Row>
<Validation>
    <Blazorise.Field>
        <Blazorise.FieldLabel Class="is-bold">First name</Blazorise.FieldLabel>
        <Blazorise.TextEdit Placeholder="John" @bind-Text="@ContactDetails.Forename" MaxLength=40>
            <Feedback>
                <ValidationError/>
            </Feedback>
        </Blazorise.TextEdit>
    </Blazorise.Field>
</Validation>
<Validation>
    <Blazorise.Field>
        <Blazorise.FieldLabel Class="is-bold">Last name</Blazorise.FieldLabel>
        <Blazorise.TextEdit Placeholder="Doe" @bind-Text="@ContactDetails.Surname" MaxLength=40>
            <Feedback>
                <ValidationError />
            </Feedback>
        </Blazorise.TextEdit>
    </Blazorise.Field>
</Validation>

电子邮件地址
你的细节
名字
姓
也许这有助于:

如果要使用数据注释,可以在视图模型中创建一个布尔属性,指示是否应检查所需的

public bool HasUserClicked { get; set; }

[RequiredIf(nameof("HasUserClicked",true)
public string MyProperty{ get; set; }
当用户单击时,切换该布尔值

编辑 顺便说一句,我不确定它对Blazor会起作用。。。
如果你想有更多的条件验证,你应该考虑一下。

这个特性将在下一个版本中获得,v0.9.1.

您可以从类中删除该属性并在单击事件中进行验证下一版本的Blazorise到底是什么?下一版本的Blazorise。
RequiredIf
在.net core 3.1中不可用,我已尝试根据此扩展
RequiredAttribute
类,但没有成功。