C# Blazor EditForm和Fluent验证

C# Blazor EditForm和Fluent验证,c#,blazor,fluentvalidation,C#,Blazor,Fluentvalidation,只需基于EditForm组装一个包装器并使用Fluent验证即可。我在此表单上创建了两个属性,如下所示: if (ModelValidation) { editContext.OnValidationRequested += (sender, eventArgs) => ValidateModel((EditContext)sender, messages); } if (FieldValidation) { editContext.OnFieldChan

只需基于EditForm组装一个包装器并使用Fluent验证即可。我在此表单上创建了两个属性,如下所示:

if (ModelValidation)
{
    editContext.OnValidationRequested +=
        (sender, eventArgs) => ValidateModel((EditContext)sender, messages);
}

if (FieldValidation)
{
    editContext.OnFieldChanged +=
        (sender, eventArgs) => ValidateField(editContext, messages, eventArgs.FieldIdentifier);
}
这允许在OnFieldChanged(值更改,在exit字段验证)或按下submit按钮(OnValidationRequested)时进行验证


但是,如果我说一个文本字段是空的(应该是非空的),那么OnFieldChanged()处理程序不会触发…(毫不奇怪字段没有更改)。有没有一种方法可以在不使用javascript的情况下强制调用OnFieldChanged()或kill focus处理程序?

我觉得这很有趣,所以我在GitHub的ASP.NET核心项目上查看了Blazor的
InputText
类的源代码:

您会注意到只有一个事件处理程序,它用于当用户更改文本框中的值时浏览器引发的
onchange
事件

builder.AddAttribute(4, "onchange", EventCallback.Factory.CreateBinder<string>(this, __value => CurrentValueAsString = __value, CurrentValueAsString));

太好了,我会查出来的,谢谢你的帮助,本杰明。如果有效,请将其标记为答案。如果没有,请告诉我,我会再为你想想!我又看了一眼,上面的答案改变了我的看法。
@page "/"
<InputText @onblur="DoSomething" />

@code
{
    private void DoSomething()
    { // Your logic here
    }
}