C# Blazor EditForm和Fluent验证
只需基于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
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
}
}