Blazor 如何访问EditForm中单个字段的验证?

Blazor 如何访问EditForm中单个字段的验证?,blazor,blazor-client-side,blazor-webassembly,asp.net-blazor,Blazor,Blazor Client Side,Blazor Webassembly,Asp.net Blazor,我想根据中的验证结果操作css 我的简化表格如下所示 <EditForm Model="Registration" OnValidSubmit="Submit"> <label for="input-username">Username</label> <InputText id="input-username" type=&q

我想根据
中的验证结果操作css

我的简化表格如下所示

<EditForm Model="Registration" OnValidSubmit="Submit">
    <label for="input-username">Username</label>
    <InputText id="input-username" 
               type="text" 
               class="???" 
               @bind-Value="Registration.Username" />
    <p>
        <ValidationMessage For="@(() => Registration.Username)" />
    </p>
</EditForm>

用户名


我的表单比这个表单有更多的字段,因此我只想过滤注册的验证。Username要只编辑
#input Username

的css类,您可以订阅EditContext对象的OnFieldChanged事件,找出哪个字段已更改,并相应地执行操作

<EditForm EditContext="EditContext" OnValidSubmit="Submit">
    <DataAnnotationsValidator />

     <label for="input-username">Username</label>
    <InputText id="input-username" type="text" class="MyUsername" 
               @bind-Value="Registration.Username" />
    <p>
        <ValidationMessage For="@(() => Registration.Username)" />
    </p>
            <button type="submit">Submit</button>
        
</EditForm>

@code
{
    private Registration Model = new Registration();
    private EditContext EditContext;
    private string MyUsername = "InitialCssClass";

    protected override void OnInitialized()
    {
        EditContext = new EditContext(Model);

        EditContext.OnFieldChanged += EditContext_OnFieldChanged;

    }

    private void EditContext_OnFieldChanged(object sender, 
                                         FieldChangedEventArgs e)
    {
         if (e.FieldIdentifier.FieldName == nameof(Model.Username))
         {
             MyUsername = "Set here a new class name, etc.";
         }
    }
}

用户名

提交 @代码 { 私人注册模型=新注册(); 私有编辑上下文编辑上下文; 私有字符串MyUsername=“InitialCssClass”; 受保护的覆盖无效OnInitialized() { EditContext=新的EditContext(模型); EditContext.OnFieldChanged+=EditContext\u OnFieldChanged; } 私有void EditContext\u OnFieldChanged(对象发送方, FieldChangedEventArgs(e) { if(e.FieldIdentifier.FieldName==nameof(Model.Username)) { MyUsername=“在此处设置新的类名等”; } } }